我有一个带有人员ID和其他列的Oracle表。此人员ID可以有一行或更多行。
示例tablename:inventory
personID personName type bookname itemnumber
101 aaa Book book1 2001
101 aaa Book book2 2002
105 mmm Book book3 2003
107 bbb Book book4 2006
107 bbb Book book5 2007
107 bbb DVD DVD1 7001
依旧......
Select * from inventory where type='Book';
对于ids 101,105和107,将返回5行。
但是我想省略只有一行的id(在上面的例子中是105),我希望sql查询只返回有多行的ID的行,在本例中为101和107,这些ID的相应值。 因此结果应该只有四行而不是五行。怎么办呢?
我是否需要为此编写游标,或者有人可以为此建议一个示例脚本吗?
答案 0 :(得分:1)
SELECT * FROM inventory
WHERE inventory.personID IN
(SELECT i.personID FROM inventory i
WHERE i.type='Book'
GROUP BY i.personID
HAVING COUNT(*)>1)x
AND inventory.type='Book'