我们有一张桌子"对"有3列,像这样: 对(人,第1项,第2项)
1, 1, 1
1, 1, 2
1, 1, 2
2, 2, 1
2, 2, 1
如何为每个人获得一对独特的item1-item2对?像这样: 人,pair_num
1, 2
2, 1
我能想到的只有: 选择人,计数(*)来自( 选择不同的人,item1,item2 从成对 ) 逐个人分组;
但是有没有子查询的解决方案吗?
答案 0 :(得分:0)
SELECT person, (item1 + item2) AS pair FROM pairs GROUP BY person;
答案 1 :(得分:0)
count(distinct)
可以带有多个参数:
select person, count(distinct item1, item2) as numpairs
from pairs
group by person;
如果您希望(1,2)与(2,1)相同,请使用least()
和greatest()
:
select person, count(distinct least(item1, item2), greatest(item1, item2)) as numpairs
from pairs
group by person;