我目前正在尝试为我的网站创建某种形式的即时通讯工具,允许用户彼此沟通。为此,我创建了一个名为messages
的sql表,标题为id, senderID, recipientID, timestamp, message
。仅选择来自所有结果的最新记录,其中username = x?
目前,我正在努力研究如何为id = x
的给定用户创建所有对话的列表(不是单个消息)。此列表应该只包含发送到用户X的最新消息,从每个发件人Y1,Y2,Y3,...
例如,考虑表
-------------------------------------------------------------
| ID | senderID | recipientID | timestamp | message |
-------------------------------------------------------------
| 1 | 14 | 34 | 2017-06-21 | Hello ... |
| 2 | 14 | 37 | 2017-06-22 | How ar... |
| 3 | 11 | 34 | 2017-06-23 | I was ... |
| 4 | 17 | 34 | 2017-06-24 | Good ... |
| 5 | 18 | 34 | 2017-06-25 | My na ... |
| 6 | 11 | 34 | 2017-06-26 | I've ... |
| 7 | 14 | 34 | 2017-06-27 | Thank ... |
| 8 | 12 | 34 | 2017-06-28 | I nee ... |
| 9 | 17 | 34 | 2017-06-29 | Have ... |
| 10 | 17 | 34 | 2017-06-30 | You h ... |
-------------------------------------------------------------
现在,假设我是用户34,我希望查看包含每个senderID
给我自己的最新消息的列表。什么是SQL查询会这样做?即SQL查询会给出如下结果:
-------------------------------------------------------------
| ID | senderID | recipientID | timestamp | message |
-------------------------------------------------------------
| 5 | 18 | 34 | 2017-06-25 | My na ... |
| 6 | 11 | 34 | 2017-06-26 | I've ... |
| 7 | 14 | 34 | 2017-06-27 | Thank ... |
| 8 | 12 | 34 | 2017-06-28 | I nee ... |
| 10 | 17 | 34 | 2017-06-30 | You h ... |
-------------------------------------------------------------
什么SQL命令用于给出这个结果?
通过时间戳DESC其中recipientID = 34阶 –