我正在尝试在PHP / MySQL中为消息传递系统创建“对话概述”页面。基本上,它看起来像iPhone的文本/ SMS概述页面。由您发送或接收消息的其他用户分组的消息。它应该首先显示与最新消息(已发送或已接收)的对话(降序)
messages table
id | sender_id | receiver_id | datetime | message
这是我到目前为止的查询:
SELECT id, sender_id, receiver_id, max( datetime ) AS dt,
SUBSTRING_INDEX( GROUP_CONCAT( CAST( message AS CHAR )
ORDER BY datetime DESC ) , ',', 1 ) AS message
FROM vc_messages
WHERE (
sender_id = '1'
OR receiver_id = '1'
)
GROUP BY sender_id, receiver_id
查询的问题是它不是GROUP BY其他用户。如果我向其他用户发送了一条消息,它会在Convo概述结果中显示两次。基本上,我需要GROUP BY sender_id和receiver_id字段。
答案 0 :(得分:0)
因此,如果我理解正确,当您发送邮件时,发送者sender_id和receiver_id列与发送给您的邮件进行比较?你需要同一组内的两个案例吗?
我手边没有语法,但尝试GROUP BY MIN(sender_id, receiver_id), MAX(sender_id, receiver_id)
之类的内容,这样无论发送方和接收方是否都切换,两种情况都会产生相同的组合。