sql >> Databáze >  >> RDS >> Oracle

Klauzule 'In' na serveru SQL s více sloupci

Tato syntaxe v SQL Server neexistuje. Použijte kombinaci And a Or .

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

(V tomto případě byste to mohli zkrátit, protože value_type je porovnáván se stejnou hodnotou v obou kombinacích. Chtěl jsem jen ukázat vzor, ​​který funguje jako IN v oracle s více poli.)

Při použití IN s poddotazem jej musíte přeformulovat takto:

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)

Existují další způsoby, jak to udělat, v závislosti na případu, jako vnitřní spojení a podobně.



  1. Mohu předpovědět, jak velký bude můj index Zend Framework? (a pár rychlých otázek)

  2. Získání neznámé chyby sloupce při použití „as“ v příkazu mysql

  3. PL/SQL Jak získat před X dnem datum jako datum?

  4. Použití vyhrazených slov v názvech sloupců