集团私人消息系统

时间:2013-02-01 14:05:04

标签: php mysql sql greatest-n-per-group

我正在编写一个完美的私人消息系统。我需要为组消息编写一个SQL查询,该消息应该只出现一次。总之,我想要一个像Facebook一样的“对话视图”,只显示发送或收到的最新消息。后端脚本是私有消息系统中的PHP。

我附了一个屏幕截图:

Screenshot

这是我正在使用的附加查询。

测试演示已上传到以下地址:http://developers89.byethost14.com/messages/

1 个答案:

答案 0 :(得分:7)

SELECT  *
FROM    conversation
WHERE   (LEAST(sender_ID, receiverID), GREATEST(sender_ID, receiverID), date)
        IN
        (
            SELECT  LEAST(sender_ID, receiverID) x, 
                    GREATEST(sende_ID, receiverID) y,
                    MAX(date) max_date
            FROM    conversation
            GROUP   BY x, y
        )
        AND '$uid' IN (sender_ID, receiverID)
//      AND other conditions if you have  ...
//      ORDER BY ...
//      LIMIT ...