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

Forespørgsel, hvor to kolonner er i resultatet af indlejret forespørgsel

Faktisk nej, der er ikke en smartere måde at skrive dette på (uden at besøge Y to gange), da det X, som myTable.X og myTable.YY matcher til, muligvis ikke er fra samme række.

Som et alternativ er EXISTS-formen for forespørgslen

select *
from myTable A
where exists (select * from Y where A.X = Y.X)
  and exists (select * from Y where A.XX = Y.X)

Hvis Y indeholder X-værdier af 1,2,3,4,5 , og x.x = 2 og x.xx = 4 , de findes begge (på forskellige poster i Y), og posten fra myTable skal vises i output.

EDIT:Dette svar tidligere udtalte, at You could rewrite this using _EXISTS_ clauses which will work faster than _IN_ . SOM Martin har påpeget, er dette ikke sandt (i hvert fald ikke for SQL Server 2005 og nyere). Se links



  1. slet sqlite-database ved opdatering af ny version af applikationen

  2. SUBTIME() Eksempler – MySQL

  3. MySQL vælg formateret dato fra millisekund-feltet

  4. Sådan bruges IDENTITY()-funktionen i SQL Server