Mysql 分组两列时删除冗余

Mysql 分组两列时删除冗余,mysql,select,Mysql,Select,以下是我的表格: 我希望根据sender和Reciver的值获得结果,并以一种不会产生多余结果的方式对它们进行分组 例如: 发送方=2 接收器=1 接收器=2 发送方=1 在上面的示例中,不应显示两个结果,只应显示一个结果 我正在使用mysql,下面给出了我正在使用的代码,它给出了如图所示的多个结果 SELECT Mid,sender,Reciver FROM `tbl_messages` WHERE sender=1 or Reciver = 1 GROUP by Reciver,send

以下是我的表格:

我希望根据sender和Reciver的值获得结果,并以一种不会产生多余结果的方式对它们进行分组

例如:

发送方=2 接收器=1

接收器=2 发送方=1

在上面的示例中,不应显示两个结果,只应显示一个结果

我正在使用mysql,下面给出了我正在使用的代码,它给出了如图所示的多个结果

SELECT Mid,sender,Reciver 
FROM `tbl_messages`
WHERE sender=1 or Reciver = 1 
GROUP by Reciver,sender or sender,Reciver;
试试这个:

SELECT newSender, newReceiver/*some aggregate functions or access other comlumns*/ FROM (
    SELECT Mid,/* add more columns if needed*/
           case when sender < reciver then sender else receiver end newSender,
           case when sender > reciver then sender else receiver end newReceiver
    FROM `tbl_messages`
    WHERE sender = 1 or Reciver = 1 
) a GROUP by newSender, newReceiver;

你没有提到你想保留哪一个如果你认为mid与问题无关,请不要将其包含在solution@Strawberry它可能与OP有关,也可能与OP有关,这就是我在解决方案中包含它的原因。但感谢您的评论:mid是相关的,我还需要添加一些列,所以我认为这对其他用户会有帮助,所以我添加了一条评论,但我在格式方面很差劲,因此造成了混乱。。尽管如此,这确实令人惊讶,而且很有帮助。。希望我的投票能产生影响,这值得一百万张投票,我几乎整个上午都在尝试一百万件愚蠢的事情。。非常感谢@michalTurczyn非常感谢…@AdarshaNepal那么你应该接受答案左边的绿色复选标记: