需要合并两列,以便我可以在同一个表中使用GROUP BY

时间:2011-06-16 06:54:07

标签: mysql

我正在尝试在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字段。

1 个答案:

答案 0 :(得分:0)

因此,如果我理解正确,当您发送邮件时,发送者sender_id和receiver_id列与发送给您的邮件进行比较?你需要同一组内的两个案例吗?

我手边没有语法,但尝试GROUP BY MIN(sender_id, receiver_id), MAX(sender_id, receiver_id)之类的内容,这样无论发送方和接收方是否都切换,两种情况都会产生相同的组合。