sql >> Database teknologi >  >> RDS >> Oracle

'In'-klausul i SQL-server med flere kolonner

Denne syntaks findes ikke i SQL Server. Brug en kombination af And og Or .

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

(I dette tilfælde kan du gøre det kortere, fordi værdi_type sammenlignes med den samme værdi i begge kombinationer. Jeg ville bare vise mønsteret, der fungerer ligesom IN i orakel med flere felter.)

Når du bruger IN med en underforespørgsel, skal du omformulere den sådan her:

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)

Der er andre måder at gøre det på, afhængigt af sagen, såsom indre samlinger og lignende.



  1. Skinner 4 felttype til multiselect med foruddefinerede værdier

  2. Er det muligt for SQL Output-sætning at returnere en kolonne, der ikke er indsat?

  3. Sådan tilføjes AD/BC-indikatoren til en dato i Oracle

  4. PHP-siden viser rå kode