【问题标题】:SQL query to select distinct record with 2 or more repetition in another fieldSQL 查询以在另一个字段中选择具有 2 个或更多重复的不同记录
【发布时间】:2010-05-15 14:54:02
【问题描述】:

所以我有这张图书订单表,它包含 2 列,一列是订单 ID(主键),另一列是客户订购的图书 ID。例如:

+---------+--------+
| OrderID | BookID |
+---------+--------+
| 0001    | B002   |
| 0002    | B005   |
| 0003    | B002   |
| 0004    | B003   |
| 0005    | B005   |
| 0006    | B002   |
| 0007    | B002   |
+---------+--------+

我想要的是获取获得 2 次或更多购买/订单的书籍的 ID,例如,如果我对上述数据运行 SQL 查询,我会得到以下结果:

+--------+
| BookID | 
+--------+
| B002   |
| B005   |
+--------+

我不知道这是否可以在 SQL 中存档,或者我必须构建一个更简单的语句并针对另一种语言的所有记录重复运行查询。我需要一些帮助,感谢您阅读我的问题。

【问题讨论】:

    标签: sql


    【解决方案1】:

    当然可以使用标准SQL 语法来实现。使用GROUPHAVING 语句:

    SELECT BookId, COUNT(BookId) AS CNT
    FROM YourTableName
    GROUP BY BookId
    HAVING COUNT(BookId) >= 2
    

    在此查询中粘贴您的真实表名而不是 YourTableName

    使用SELECT BookId, COUNT(BookId) AS CNT 将返回:

    +--------+-----+
    | BookID | CNT |
    +--------+-----+
    | B002   | 4   |
    | B005   | 2   |
    +--------+-----+
    

    【讨论】:

    • 非常感谢代码确实有效!但我必须将 COUNT(BookID) 更改为 BookID 才能正常工作,但我不知道为什么
    • 只需在SELECT 语句中添加另一个字段。看看修改后的版本。
    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2017-11-17
    • 2022-11-28
    • 2012-09-14
    • 1970-01-01
    相关资源
    最近更新 更多