我有这样的桌子
邮件发件人收件人邮件
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/

10-08 23:06