Oracle
 sql >> база данни >  >> RDS >> Oracle

Клауза „In“ в SQL сървър с множество колони

Този синтаксис не съществува в SQL Server. Използвайте комбинация от And и Or .

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

(В този случай можете да го направите по-кратък, защото value_type се сравнява с една и съща стойност и в двете комбинации. Просто исках да покажа модела, който работи като IN в oracle с множество полета.)

Когато използвате IN с подзаявка, трябва да я перифразирате така:

Oracle:

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

SQL сървър:

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

Има и други начини да го направите, в зависимост от случая, като вътрешни съединения и други подобни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Метапрограмиране на oracle sql select оператор

  2. грешка при липсваща ключова дума в оператора на oracle CASE WHEN sql

  3. намиране на имена на колони и имена на таблици, посочени в SQL

  4. как да изградите отново опашката wf_java_deferred

  5. Oracle Trigger ORA-04098:тригерът е невалиден и неуспешно повторно валидиране