sql >> Databasteknik >  >> RDS >> Oracle

'In'-klausul i SQL-server med flera kolumner

Denna syntax finns inte i SQL Server. Använd en kombination av And och Or .

SELECT * 
FROM <table_name> 
WHERE 
  (value_type = 1 and CODE1 = 'COMM')
  OR (value_type = 1 and CODE1 = 'CORE') 

(I det här fallet kan du göra det kortare, eftersom value_type jämförs med samma värde i båda kombinationerna. Jag ville bara visa mönstret som fungerar som IN i oracle med flera fält.)

När du använder IN med en underfråga måste du omformulera den så här:

Oracle:

SELECT * 
FROM foo 
WHERE 
  (value_type, CODE1) IN (
    SELECT type, code 
    FROM bar
    WHERE <some conditions>)

SQL Server:

SELECT * 
FROM foo 
WHERE 
  EXISTS (
    SELECT * 
    FROM bar 
    WHERE <some conditions>
      AND foo.type_code = bar.type 
      AND foo.CODE1 = bar.code)

Det finns andra sätt att göra det, beroende på fallet, som inre skarvar och liknande.



  1. MySQL Om det finns infoga i eller gör något annat

  2. Finns det ett OM FINNS-test för en länkad server?

  3. JDBC, MySQL:hämta bitar i en BIT(M!=1) kolumn

  4. Hur använder du skriptvariabler i psql?