【问题标题】:Returning the total number of rows with value that show up in the table at least twice返回具有至少两次出现在表中的值的总行数
【发布时间】:2021-08-10 20:57:40
【问题描述】:

我想显示表中至少两次具有特定行值的总行数。所以基本上是重复的。我在 WHERE 和 HAVING 但没有任何效果,因为它返回对组功能消息的无效使用。下面是我的查询示例之一。

SELECT      
    COUNT(*) 
FROM 
    table 
WHERE
    COUNT(column) > 1;

也许我应该做一些嵌套查询,但还不知道怎么做。我应该使用什么查询来获得正确的结果?

【问题讨论】:

  • 尝试查找如何进行嵌套查询?你似乎在正确的轨道上......
  • 嗨@Michal_SI 你得到你预期的结果了吗?

标签: mysql sql


【解决方案1】:

使用子查询获取所有重复行的行数。然后在主查询中求和。

SELECT SUM(t.rowcount)
FROM (
    SELECT COUNT(*) AS rowcount
    FROM table
    GROUP BY column
    HAVING rowcount > 1)
) AS t

【讨论】:

  • 我看到你重新打开了这个问题。请解释为什么它不是 Count duplicates records in Mysql table? 的重复您的答案中的 SQL 与“重复”问题的已接受答案中的 SQL 几乎相同。
  • 这是COUNT(*)SUM(rowcount) 的区别。另一个问题只计算每个重复值一次,这会计算具有重复值的总行数。
  • 在另一个问题中,答案是2。使用我的代码,结果将是5
【解决方案2】:

查找重复行 -

SELECT column, COUNT(column)  
FROM table_name  
GROUP BY column  
HAVING COUNT(column) > 1;  

获取重复次数 -

SELECT count(*)
FROM (
 SELECT column FROM table_name
 GROUP BY column HAVING COUNT(column) > 1
) AS t

【讨论】:

  • 这计算重复的数量,它不计算包含这些重复的行数。
猜你喜欢
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
相关资源
最近更新 更多