TABLE X
col1,col2
1 , 2
1 , 7
1 , 4
1 , 8
2 , 3
2 , 1
2 , 2
3 , 1
3 , 8
3 , 9
3 , 4
4 , 5
4 , 3
4 , 2
4 , 8
4 , 4
我想检索包含在COL2的COL1值在这种情况下,值2和4 它将检索值1和4 我怎样才能做到这一点不使用UNION所有运营商?查询,而不联盟操作SQL
,我使用的查询是
select distinct col1
from X as A
where col1 = (
select col1 from (
select distinct col1
from X as B
where A.col1 = B.col1 and col2 = 2
union ALL
select distinct col1
from X as C
where A.col1 = C.col1 and col2 = 4
) D
group by col1
having count(col1) > 1
)
它返回正确的结果,但我的猜测是性能昂贵。 任何人都可以给我关于如何实现相同的结果,但没有工会的想法?
事实上,你连接的演示是正确的 - 但查询有来自不同你在答案中发布的一个。区别在于'COUNT'中的'DISTINCT'。 – PaF
@PaF - 对于你没有使用'DISTINCT'解释的情况,查询也可以正常工作,请参见[it here](http://sqlfiddle.com/#!2/1aeeb/2) –
重复的条目恰好就是我的情况谈论:) – PaF