有个需求是要求找出又有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