需要MySQL查询消息功能,首先显示最新消息(已发送或已接收),按用户分组

时间:2011-06-20 02:57:58

标签: mysql

我正在尝试在PHP / MySQL中为消息传递系统创建“对话概述”页面。基本上,它看起来像iPhone的文本/ SMS概述页面。由您发送或接收消息的其他用户分组的消息。它应该首先显示与最新消息(已发送或已接收)的对话(降序)

messages table

id | sender_id | receiver_id | datetime | message

1 个答案:

答案 0 :(得分:0)

棘手的问题。尝试以下解决方案

SELECT id,sender_id,receiver_id,
CASE WHEN sender_id >= receiver_id THEN 
  CONCAT(CAST(sender_id AS CHAR),'|', CAST(receiver_id AS CHAR))
ELSE
  CONCAT(CAST(receiver_id AS CHAR),'|' CAST(sender_id AS CHAR))
END AS participants ,
`datetime`,message from messages 
ORDER BY participants,`datetime`

这样,您就有了一个额外的计算字段,表示sender_id-receiver_id关系,您需要两者的组合是一个实体。按计算字段排序可能会在某些时候变慢。您可能需要考虑在表中创建一个实际的额外字段来存储参与者信息。