为每个另一列计算不同的多列

时间:2014-12-27 23:24:57

标签: mysql count

我们有一张桌子"对"有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 从成对 ) 逐个人分组;

但是有没有子查询的解决方案吗?

2 个答案:

答案 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;