我正在尝试在PHP / MySQL中为消息传递系统创建“对话概述”页面。基本上,它看起来像iPhone的文本/ SMS概述页面。由您发送或接收消息的其他用户分组的消息。它应该首先显示与最新消息(已发送或已接收)的对话(降序)
messages table
id | sender_id | receiver_id | datetime | message
答案 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关系,您需要两者的组合是一个实体。按计算字段排序可能会在某些时候变慢。您可能需要考虑在表中创建一个实际的额外字段来存储参与者信息。