如何计算与MySQL另一列中的特定行关联的唯一值?

时间:2019-05-24 05:47:54

标签: mysql count

我有一个这样的表,说它是tableA。我需要计算每个“源”列的“目标”列有多少个唯一值。我该如何使用选择计数呢?

Source  Target
10000   1026
10000   1027
10000   1147
10000   2308
10000   2475
10000   3551
10000   4193
10000   4792
10000   5139
10000   5925
10000   7157
10000   7249
10000   8517
1019    5925
1021    5925
10235   6237
1026    1019
1026    1021
1026    5925
1027    1019
1027    1021
1027    5925

因此,预期结果将是:

UniqSource  No_UniqTarget
10000   13
1019    1
1021    1
10235   1
1026    3
1027    3

我的(不好的)解决方案是获得列源的唯一性和列目标的唯一性,但仍然无法满足期望。

select count(distinct(Target)) from tableA
where Source='10000'

对于这个简单的代码,我可以找到每个唯一来源的结果,但是如何像上面的预期结果一样自动生成结果呢?

2 个答案:

答案 0 :(得分:1)

尝试一下:

SELECT Source AS UniqSource, COUNT(DISTINCT(Target)) AS No_UniqTarget 
  FROM tableA 
GROUP BY UniqSource;

COUNT(DISTINCT(Target))也可以写成COUNT(DISTINCT Target)

答案 1 :(得分:0)

这是查询

SELECT Source,count(*) as No_UniqTarget FROM tableA GROUP BY Source