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

标签 mysql count

我有一张这样的 table ,说是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'

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

最佳答案

试试这个:

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

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

关于mysql - 如何计算与 MySQL 中另一列中的特定行关联的唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56286527/

相关文章:

c# - 仅在其他机器上的 MySQL 语法错误

mysql - 存储过程更新MYSQL中的单引号

python - 来自 App Engine 的 Google Cloud SQL 的连接限制是什么,以及如何最好地重用数据库连接?

java - 如何获取字符串数组中元素的长度(出现错误)?

Python-如何计算列表中出现的次数

php - 使用 PDO 检索匹配行的总数以及行本身

PHP 和 SMTP 不能一起工作

php - 无法回显函数中获取的变量

MySQL:计算多个表中的重复行而不增加计数

javascript - 如何根据商品数量计算每件商品的价格?