所以希望这个问题没有被问到,但我没有发现。
我的示例表如下所示:https://imgur.com/a/bbykp
例如,对于我的sql,我知道用户id为1,我想显示我的messanger的收件箱,因为我需要知道用户id 1是否收到了一条消息或者是一条消息的发送者。
例如:
sender_id receiver_id
1 2
3 1
1 4
12 1
应该给我四个id为1的收件箱结果。
所以我现在坚持
SELECT * FROM chats AS tm
WHERE tm.id IN
(SELECT MAX(id) FROM chats WHERE sender_id = 1 OR receiver_id = 1 GROUP BY receiver_id)
这让我明白:https://imgur.com/a/p665t
你会发现我不需要id 2,但我喜欢id 3,因为它是那个对话的最新消息。
那么,如何使用sql来确定我想要的是发送方id 1还是接收方id 1的最新版本呢?
谢谢您!
2条答案
按热度按时间nmpmafwu1#
一个选项使用最小/最大的技巧:
演示
ej83mcc02#
选择*from chats as tm where tm.id in(选择max(id)from chats where sender\u id=1 or receiver\u id=1 group by receiver\u id)
你可以试试这样的上衣
从发送者id=1或接收者id=1的聊天中选择id order by id desc
限制1
这是聊天中的最后一行,其中包含id为1的发件人或收件人
第一个是一个近似值吗´(次优)