gpt4 book ai didi

mysql group by 2列的唯一组合

转载 作者:行者123 更新时间:2023-11-29 01:27:41 26 4
gpt4 key购买 nike

我有一张表:Employee

columns:
1. id
2. name
3. city1
4. city2

我想GROUP BY city1city2 的组合,例如

  • city1 的员工:'Bangalore' 和 city2:'Chennai'
  • 和 city1 的另一名员工:'Chennai' 和 city2:'Bangalore'

GROUP BY 完成后出现在一个单独的组中。

帮我构造这个sql。

最佳答案

最简单的方法是使用least()greatest():

select least(city1, city2) as city1, greatest(city1, city2) as city2, count(*)
from employees
group by least(city1, city2), greatest(city1, city2);

如果您有 NULL 值,逻辑会稍微复杂一些。这个问题没有提到 NULL 值。

注意:

这个答案被编辑为使用:

group by city1, city2

虽然技术上是正确的,但我出于两个原因删除了编辑:

  1. city1city2 是有歧义的,因为它们既是数据中的列名又是列别名。
  2. 并非所有数据库都支持 group by 子句中的列别名。

第一个是主要原因。如果列别名与表中的名称不同,那么替代公式就可以了。否则,我认为代码会令人困惑,因此难以维护且更容易出错。

关于mysql group by 2列的唯一组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33656748/

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