Mysql 仅当有两行以上类似行时才分组?
我只想在有2个以上RWO匹配规则时对项目进行分组。如何做到这一点 例如:按列分组 应返回:Mysql 仅当有两行以上类似行时才分组?,mysql,sql,aggregate-functions,Mysql,Sql,Aggregate Functions,我只想在有2个以上RWO匹配规则时对项目进行分组。如何做到这一点 例如:按列分组 应返回: Col | count(*) --------------- A 2 A 2 B 3 它只显示一次B,因为有3个以上的结果。因为MySQL没有COUNT OVER,所以当计数小于3时,需要一个内联视图来获取计数。那么它只是一个普通计数查询的并集 SELECT counts.col, counts.k FROM test INNER JOIN
Col | count(*)
---------------
A 2
A 2
B 3
它只显示一次B,因为有3个以上的结果。因为MySQL没有COUNT OVER,所以当计数小于3时,需要一个内联视图来获取计数。那么它只是一个普通计数查询的并集
SELECT counts.col,
counts.k
FROM test
INNER JOIN (SELECT col,
COUNT(col) k
FROM test
GROUP BY col
having count(col) < 3 ) counts
ON test.col = counts.col
UNION ALL
SELECT col,
COUNT(col) k
FROM test
GROUP BY col
HAVING COUNT(col) > 2
为什么A出现两次而B只出现一次?@ajreal你读过这个问题吗?我只想在有两个以上的项目符合规则时对项目进行分组。我没有尝试任何操作。我知道如何使用一个自连接加上另一个查询来实现它,但是查询会变得太长,并且嵌套在其他查询中already@MБΓΓББLL-示例输出没有意义,我的意思是已经采用了分组格式。为什么要在输出中显示两次?
SELECT counts.col,
counts.k
FROM test
INNER JOIN (SELECT col,
COUNT(col) k
FROM test
GROUP BY col
having count(col) < 3 ) counts
ON test.col = counts.col
UNION ALL
SELECT col,
COUNT(col) k
FROM test
GROUP BY col
HAVING COUNT(col) > 2