订购用户的消息SQL

时间:2011-09-18 02:04:19

标签: php mysql sql

我正在尝试通过将用户向其发送消息的人对话进行分组来构建用户的消息收件箱。

所以我想要一个用户列表,但我希望列表中的第一个用户是发送最新消息的用户。

我的message表格包含以下字段:id, sender_id, receiver_id, text

以下查询为我提供了我需要的列表,但没有按消息ID的降序排序。

SELECT sender_id AS messgr_id FROM   messages WHERE  receiver_id = '$sess_id' 
UNION
SELECT receiver_id AS messgr_id FROM messages  WHERE  sender_id = '$sess_id'

我希望有一种方法可以在SQL中对结果进行排序,而不必使用可能较慢的php进程。

谢谢!

2 个答案:

答案 0 :(得分:1)

假设id是一个标识列(特别是你希望它是auto incrementing),那么更大的id表示记录更新。在这种情况下,您将能够按降序排序,以便首先获取更新的消息。像这样(未经测试):

SELECT id,
       CASE WHEN receiver_id = '$sess_id' THEN sender_id
            ELSE receiver_id END AS messgr_id
FROM messages
WHERE  receiver_id = '$sess_id'
OR sender_id = '$sess_id'
ORDER BY id DESC

答案 1 :(得分:0)

正如宙斯所说,为什么你不能为消息设置日期时间戳?

没有日期时间戳的消息传递系统不是消息传递系统。

日期时间戳是自然对邮件进行排序的方法。