我想选择userid
的认证为 BA + B (可以是 BA + B + C ,由应用程序确定) BA 和 B 这两个值。
样本表数据:
id, userid, certification
1 1 A
2 1 BA
3 1 C
4 2 B
5 2 C
6 2 BA
仅userid=2
拥有 BA 和 B 认证。预期结果:
userid
2
答案 0 :(得分:4)
执行GROUP BY
。将HAVING
与COUNT DISTINCT
一起使用,以确保BA和B都在其中。
select userid
from MyTable
where certification IN ('B', 'BA')
group by userid
having count(distinct certification ) = 2
答案 1 :(得分:0)
请尝试以下查询:
declare @tbl table (id int, userid int, certification varchar(5));
insert into @tbl values
(1, 1, 'A' ),
(2, 1, 'BA'),
(3, 1, 'C' ),
(4, 2, 'B' ),
(5, 2, 'C' ),
(6, 2, 'BA');
select userid
from @tbl
group by userid
having sum(case when certification = 'B' then 1 else 0 end) > 0
and sum(case when certification = 'BA' then 1 else 0 end) > 0
它强制每个userid
至少拥有一个B
和一个BA
认证。