Raj*_*aul 5 mysql sql group-by
我有一张桌子:Employee
columns:
1. id
2. name
3. city1
4. city2
Run Code Online (Sandbox Code Playgroud)
我想要和GROUP BY的组合,例如city1city2
'Bangalore'city1:和 city2:的员工'Chennai' 'Chennai'和 city2:'Bangalore' 完成后会形成一个组GROUP BY。
帮我构建这个sql。
最简单的方法是使用least()and greatest():
select least(city1, city2) as city1, greatest(city1, city2) as city2, count(*)
from employees
group by least(city1, city2), greatest(city1, city2);
Run Code Online (Sandbox Code Playgroud)
如果你有价值观,逻辑会稍微复杂一些NULL。这个问题没有提到NULL价值观。
笔记:
该答案已编辑为使用:
group by city1, city2
Run Code Online (Sandbox Code Playgroud)
尽管技术上是正确的,但我出于两个原因删除了编辑:
city1和city2是不明确的,因为它们都是数据中的列名和列别名。group by子句中的列别名。第一个是主要原因。如果列别名与表中的名称不同,则可以使用替代公式。否则,我认为代码会很混乱,因此难以维护并且更容易出错。