sql >> Database >  >> RDS >> Oracle

'In'-clausule in SQL-server met meerdere kolommen

Deze syntaxis bestaat niet in SQL Server. Gebruik een combinatie van And en Or .

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

(In dit geval zou je het korter kunnen maken, omdat value_type wordt vergeleken met dezelfde waarde in beide combinaties. Ik wilde alleen het patroon laten zien dat werkt als IN in Oracle met meerdere velden.)

Als je IN gebruikt met een subquery, moet je het als volgt herformuleren:

Orakel:

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)

Er zijn andere manieren om dit te doen, afhankelijk van het geval, zoals inner joins en dergelijke.



  1. Wat doet COMMIT?

  2. Een database laten vallen die door een andere gebruiker wordt gebruikt?

  3. Verwerking van gelijktijdige updates in de slaapstand

  4. Mysql-tabel vullen met willekeurige gegevens in python