sql >> Databasteknik >  >> RDS >> Sqlserver

Fråga där två kolumner finns i resultatet av kapslad fråga

Faktiskt nej, det finns inget smartare sätt att skriva detta (utan att besöka Y två gånger) med tanke på att X som myTable.X och myTable.YY matchar kanske inte kommer från samma rad.

Som ett alternativ är EXISTS-formen för frågan

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

Om Y innehåller X-värden på 1,2,3,4,5 och x.x = 2 och x.xx = 4 , de finns båda (på olika poster i Y) och posten från myTable ska visas i utdata.

EDIT:Detta svar tidigare sade att You could rewrite this using _EXISTS_ clauses which will work faster than _IN_ . SOM Martin har påpekat är detta inte sant (absolut inte för SQL Server 2005 och högre). Se länkar



  1. Oracle SQL hitta tecken ¡ i data

  2. SQLException:ORA-06550 vid anrop av PL/SQL-funktion från Java

  3. Det går inte att infoga explicit värde för identitetskolumnen i tabellen "tabell" när IDENTITY_INSERT är inställt på AV

  4. Windows Batch Script för att säkerhetskopiera lokala MySQL-databaser och bara behålla N senaste mappar med säkerhetskopior