Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按两列分组,反之亦然_Mysql_Sql_Database - Fatal编程技术网

Mysql 按两列分组,反之亦然

Mysql 按两列分组,反之亦然,mysql,sql,database,Mysql,Sql,Database,我已尝试使用两列按分组: SELECT recipient_id, sender_id, count(*) FROM messengers WHERE recipient_id=41 OR sender_id=41 group by recipient_id, sender_id 输出如下所示: 如何将第1行和第2行合并为一行,因为收件人id和发件人id的值相同,分别为40和41 这里可以使用的一个技巧是按两个ID列中的较小者和两个ID列中的较大者分组: SELECT LEAST(recip

我已尝试使用两列按分组:

SELECT recipient_id, sender_id, count(*) FROM messengers WHERE recipient_id=41 OR sender_id=41 group by recipient_id, sender_id 
输出如下所示:


如何将第1行和第2行合并为一行,因为收件人id和发件人id的值相同,分别为40和41

这里可以使用的一个技巧是按两个ID列中的较小者和两个ID列中的较大者分组:

SELECT LEAST(recipient_id, sender_id), GREATEST(recipient_id, sender_id), COUNT(*)
FROM messengers
WHERE recipient_id = 41 OR sender_id = 41
GROUP BY LEAST(recipient_id, sender_id), GREATEST(recipient_id, sender_id)

到目前为止看起来不错。我将尝试使用它,让我们等待其他人的回答,然后我投票将你的答案作为可接受的答案。谢谢我已经修改了您对此选择*从选择*从信使订单按id描述的答案,其中收件人\u id=41或发件人\u id=41按最少收件人\u id、发件人\u id、最大收件人\u id分组,发件人id,但我很难将其转换为Laravel查询生成器。@Mr.Byte ANSI 92标准要求出现在SELECT中的列也出现在GROUP BY中,或者是聚合列。因此,您不应该在此处使用SELECT*。你可以用你的拉威尔问题问一个新问题。