mysql - 选择列的唯一条目并通过另一列的唯一条目过滤这些条目

标签 mysql sql

我有以下假设表格:

col_1 | col_2
a      1
b      1
c      1
d      2
e      2
a      3
b      3
c      3

我想要的是第 1 列中的唯一条目数(5 - a、b、c、d、e),并由第 2 列的唯一条目过滤。输出应该为 2,因为

col_1 | col_2
a      1,3
b      1,3
c      1,3
d      2
e      2

col_1 | col_2
a,b,c   1,3
d,e     2

我没有输入任何条目的值。我只想要输出行数。我能做些什么?我尝试使用 DISTINCT 和 GROUP BY 进行一些操作,但没有成功。

谢谢!

最佳答案

group_concat 具有您需要的基本功能,并且还支持 distinct-ness。您只需将几个子查询组合在一起即可:

SELECT   GROUP_CONCAT(DISTINCT col_1) AS col_1, col_2
FROM     (SElECT   col_1, GROUP_CONCAT(DISTINCT col2) AS col_2
          FROM     my_table
          GROUP BY col_1) t
GROUP BY col2

关于mysql - 选择列的唯一条目并通过另一列的唯一条目过滤这些条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814661/

相关文章:

mysql - 如何从 mysql 提示导出表到文件?

mysql - 从 mysql 5.7 中的 json 数组中提取键

sql - Oracle:在触发器中使用子查询

c# - 在 C# 中生成大量插入语句的最佳方法?

sql - mysql 查询与 select - where - in - join

java - 为什么它说它是一个字符串?

php - 将mysql的时区与php服务器匹配

java - 使用 jdbc 驱动程序连接到 Cloud SQL 时出错

sql - 使用数学方法创建灯具列表

c# - .NET Core 2.1 Identity 获取所有用户及其相关角色