Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consulta onde duas colunas estão no resultado da consulta aninhada


Na verdade, não, não há uma maneira mais inteligente de escrever isso (sem visitar Y duas vezes), dado que o X ao qual myTable.X e myTable.YY correspondem podem não ser da mesma linha.

Como alternativa, o formulário EXISTS da consulta é
select *
from myTable A
where exists (select * from Y where A.X = Y.X)
  and exists (select * from Y where A.XX = Y.X)

Se Y contiver valores X de 1,2,3,4,5 e x.x = 2 e x.xx = 4 , ambos existem (em registros diferentes em Y) e o registro de myTable deve ser mostrado na saída.

EDIT:esta resposta anteriormente afirmou que You could rewrite this using _EXISTS_ clauses which will work faster than _IN_ . Como Martin apontou, isso não é verdade (certamente não para o SQL Server 2005 e superior). Ver links