查询/过程仅为具有多行的ID获取行

时间:2014-11-21 20:33:13

标签: sql oracle group-by

我有一个带有人员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的相应值。 因此结果应该只有四行而不是五行。怎么办呢?

我是否需要为此编写游标,或者有人可以为此建议一个示例脚本吗?

1 个答案:

答案 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'