gpt4 book ai didi

sql - "Symmetric"多列 GROUP BY

转载 作者:行者123 更新时间:2023-12-02 00:53:35 25 4
gpt4 key购买 nike

我有一张这样的 table :

_id sender_id receiver_id text
1 1 2 xxx
2 2 1 yyy
3 1 2 xyz
4 3 1 abc

我需要对 sender_idreceiver_id 列进行 GROUP BY,但它应该是对称的,所以 {1,2} 和 {2,1}应视为同一组。

此查询可以在随机 DBMS 上执行,因此它应该尽可能标准。

最佳答案

我认为您需要两个 CASE 表达式,因为您在两列上进行分组:

GROUP BY CASE WHEN sender_id < receiver_id THEN sender_id
ELSE receiver_id
END,
CASE WHEN sender_id < receiver_id THEN receiver_id
ELSE sender_id
END,

如果您使用的是 MySQL,请考虑使用 LEAST()GREATEST() 技巧:

SELECT LEAST(sender_id, receiver_id), GREATEST(sender_id, receiver_id)
FROM yourTable
GROUP BY LEAST(sender_id, receiver_id), GREATEST(sender_id, receiver_id)

在 SQLite 中,您可以使用 MAX()MIN() 作为 scalar functions :

SELECT MIN(sender_id, receiver_id), MAX(sender_id, receiver_id)
FROM yourTable
GROUP BY MIN(sender_id, receiver_id), MAX(sender_id, receiver_id)

关于sql - "Symmetric"多列 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com