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
Я хочу, чтобы извлечь COL1 значения, содержащиеся в col2 значения 2 и 4 в этом случае он будет получать значения 1 и 4 Как я могу выполнить это без использования UNION ВСЕ оператор?запрос без оператора 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
)
Он возвращает правильный результат, но я предполагаю, что это производительность дорого. Может ли кто-нибудь дать мне представление о том, как добиться такого же результата, но без профсоюзов?
Действительно, демо вы прикреплены правильно - но запрос там отличается от один, который вы опубликовали в своем ответе. Разница заключается в 'DISTINCT' в' COUNT'. – PaF
@PaF - запрос отлично работает и для случая, который вы объяснили без 'DISTINCT', см. [Здесь] (http://sqlfiddle.com/#!2/1aeeb/2) –
повторяющиеся записи - это именно тот случай, когда я был говоря о :) – PaF