【问题标题】:MySQL query to return only duplicate entries with countsMySQL查询仅返回具有计数的重复条目
【发布时间】:2009-02-03 20:02:36
【问题描述】:

我有一个名为 lnk_lists_addresses 的旧 MySQL 表,其中包含 list_idaddress_id 列。我想编写一个查询来报告相同list_id-address_id 组合在表中多次出现并计数的所有情况。

我试过了……

SELECT count(*), list_id, address_id
FROM lnk_lists_addresses
GROUP BY list_id, address_id
ORDER BY count(*) DESC
LIMIT 20

它工作,有点,因为有少于 20 个重复。但是我如何只返回大于 1 的计数?

我尝试在GROUP BY 之前和之后添加“WHERE count(*) > 1”,但出现错误,提示该语句无效。

【问题讨论】:

    标签: sql mysql


    【解决方案1】:
    SELECT count(*), list_id, address_id
    FROM lnk_lists_addresses
    GROUP BY list_id, address_id
    HAVING count(*)>1
    ORDER BY count(*) DESC
    

    结合我的和 Todd.Run 的答案以获得更“完整”的答案。您想使用 HAVING 子句:

    http://dev.mysql.com/doc/refman/5.1/en/select.html

    【讨论】:

      【解决方案2】:

      您想使用“HAVING”子句。 MySQL 手册中解释了它的使用。

      http://dev.mysql.com/doc/refman/5.1/en/select.html

      【讨论】:

        【解决方案3】:
        SELECT count(*) AS total, list_id, address_id
        FROM lnk_lists_addresses
        WHERE total > 1
        GROUP BY list_id, address_id
        ORDER BY total DESC
        LIMIT 20
        

        如果你命名了 COUNT() 字段,你可以在后面的语句中使用它。

        编辑:忘记HAVING (>_

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-21
          • 1970-01-01
          • 2019-04-04
          • 2018-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-10
          相关资源
          最近更新 更多