查找两列上的重复条目总数

时间:2011-09-07 20:41:39

标签: mysql

我需要获得包含多列重复数据的TOTAL条目数。在他所拥有的this页面上完成同样的事情,

SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*)
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4
HAVING COUNT(*) > 1

除了我需要总和(COUNT())。我尝试过总结,并删除group by子句,但我仍然会遇到错误。

2 个答案:

答案 0 :(得分:2)

您可以通过将分组计数作为子查询来执行此操作:

SELECT sum(sub.counts) FROM (
  SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*) as counts
  FROM MyTable
  GROUP BY COL_1, COL_2, COL_3, COL_4
  HAVING COUNT(*) > 1
) sub;

最重要的是给原始的'COUNT(*)'一个名称,这样你就可以在外部查询中轻松引用它。

答案 1 :(得分:1)

您可以使用with rollup

同时获得这两项结果
SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*) as cnt
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4 WITH ROLLUP
HAVING cnt > 1

最后一行将产生总计。

SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*) as cnt
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4 WITH ROLLUP
HAVING cnt > 1
ORDER BY (COL_1 IS NOT NULL) ASC

这将产生相同的结果,但总计为第一行。