2010-05-15 53 views
1

所以我有本书订单的这个表,它包含了2列,一个是订单ID(主键),另一个是书上说的的ID客户订购。例如:SQL查询到在另一个领域选择不同的记录有2个或更多的重复

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

我想要的是得到的,进行了2周或更多的采购/订单,例如,如果我运行针对上述数据的SQL查询书籍的ID,我会得到这样的结果:

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

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

回答

3

当然这是可以实现使用标准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 | 
+--------+-----+ 
+0

感谢很多的代码实际工作!但是,我不得不改变COUNT(的BookID)来的BookID为它工作尽管我不知道为什么 – user341956 2010-05-15 15:27:19

+0

另一场只需添加到'SELECT'声明。看看修改后的版本。 – 0x2D9A3 2010-05-15 15:32:55

+0

它的工作原理就像一个魅力现在非常感谢:) – user341956 2010-05-15 15:49:56

相关问题