我有这样的桌子
邮件发件人收件人邮件
6 677 681消息0
7 677 678消息1
9 677 678消息2
10 677 681信息3
11677698消息4
12 678 677信息5
我只想用一个参数将发件人ID和收件人ID分组。例如,我想选择与用户id 677表相关的行,如下所示;
邮件发件人收件人邮件
10 677 681信息3
11677698消息4
12 678 677信息5
我已经做了几个小时了,没有得到理想的结果。
最佳答案
这是一个解决方案
SELECT *
FROM message
WHERE message_id
IN (SELECT MAX(message_id)
FROM message
GROUP BY CASE WHEN sender_id < recipient_id
THEN CONCAT(CONCAT(sender_id, ','), recipient_id)
ELSE CONCAT(CONCAT(recipient_id, ','), sender_id)
END)
ORDER BY message_id ;
它只获取发送方ID和接收方ID之间的组合键,以便使用GROUPBY查找不同的记录。
SQL小提琴演示-http://sqlfiddle.com/#!9/9df65c/11
希望这有帮助
关于mysql - 两列独特的组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47873220/