oracle中,如何找出满足所有条件的数据?

有个需求是要求找出又有A又有B的数据,A和B都属于一个字段word

 

假设表结构如下:

userid     word

11111      A

22222     A

22222     B

33333     A

33333     B

33333     C

要求查询结果有22222和33333这两个用户的数据,不要11111,语句如何写?

查询同时有A 属性和 B 属性的用户

SELECT
	a.userid 
FROM
	( SELECT userid, word FROM tab WHERE word = 'A' ) a
	INNER JOIN ( SELECT userid, word FROM tab WHERE word = 'B' ) b ON a.userid = b.userid

 

SELECT
    a.userid 
FROM 
    tab  a
WHERE 
    a.word = 'A' 
    and a.userid in (SELECT b.userid FROM tab b WHERE word = 'B')

大概是这样的,没有验证,应该没什么大问题。

思路就是:

1. (查询一)先找出表中所有word为B的userid

2.再找出表中所有word为A,且userid在(查询一)的结果集中的userid