Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query in cui si trovano due colonne nel risultato della query nidificata

In realtà no, non c'è un modo più intelligente per scrivere questo (senza visitare Y due volte) dato che la X a cui myTable.X e myTable.YY corrispondono potrebbero non essere della stessa riga.

In alternativa, la forma EXISTS della query è

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 contiene valori X di 1,2,3,4,5 e x.x = 2 e x.xx = 4 , esistono entrambi (su record diversi in Y) e il record di myTable dovrebbe essere mostrato in output.

EDIT:questa risposta in precedenza ha dichiarato che You could rewrite this using _EXISTS_ clauses which will work faster than _IN_ . Come ha sottolineato Martin, questo non è vero (certamente non per SQL Server 2005 e versioni successive). Vedi link