我有一个简单的表来维护用户之间的消息。表结构看起来像
sender receiver message sendtime
1 2 m1 2012-01-01 12:12:12
2 1 m2 2012-01-01 12:50:20
1 2 m3 2012-01-01 12:55:55
1 3 m4 2012-01-02 05:05:05
1 4 m5 2012-01-05 05:20:20
4 1 m6 2012-01-06 06:05:00
4 1 m7 2012-01-07 11:11:11
2 4 m8 2012-01-08 05:01:01
现在,对于 ID 为 1 的用户,我需要这样的结果
sender receiver message sendtime
1 2 m3 2012-01-01 12:55:55
1 3 m4 2012-01-02 05:05:05
4 1 m7 2012-01-07 11:11:11
那就是我需要特定用户的最新消息,无论他是发送者还是接收者。
虽然看起来很容易,但我找不到编写单个 mysql 查询的方法。
另外,如果对于这种解决方案,我的桌子设计很差,我想提出建议。
注意:我想我应该提到的一件事是,例如用户 1 和用户 2 之间有多次通信。无论用户 1 是发送者还是接收者,我都需要他们两个之间的最新通信,只有最近的。
大多数用户都建议查询,这将带来一条记录,发送者 1,接收者 2,然后发送者 2,接收者 1。我不需要这两条记录,因为这是同一用户 1 和用户 2 之间的通信。我需要一个与其他每个用户一起指定的用户的最新一个。
谢谢,