我一直在尝试从mysql中的表中获取聊天列表
这是桌子的样子
|id|sender |receiver |date |
| 1|u1 |u2 |2014-06-12|
| 2|u2 |u1 |2014-06-13|
| 3|u3 |u2 |2014-06-14|
| 4|u1 |u2 |2014-06-15|
| 5|u1 |u3 |2014-06-16|
我希望查询获取u1在接收方或发送方中的所有id,但仅显示最新的id并使用日期列对查询进行排序
预期的结果是这样的
5 4
通过这种方式,它表明u1正在与u3聊天,而u1正在与u2聊天(因为u2也是第二个id中的发件人,但未显示日期)
我试图使用组和联接来创建查询,但是不可能
谢谢
最佳答案
您可以使用内部查询找到所有行,其中内部查询查找每个发件人为id
的接收者的最大u1
,并执行外部查询以获取行并对其进行排序;
SELECT id, date FROM mytable WHERE id IN (
SELECT MAX(id) id
FROM mytable
WHERE sender='u1' OR receiver='u1'
GROUP BY CASE WHEN sender='u1' THEN receiver ELSE sender END
)
ORDER BY date DESC;
An SQLfiddle to test with。
关于php - 将两个SQL查询合并为一个不重复的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24113497/