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

„Where IN“ с множество колони, дефинирани в Standard SQL?

Стандартният и преносим SQL би бил EXISTS.. и е семантично един и същ IN

SELECT *
FROM requests R
WHERE 
    EXISTS (SELECT *
           FROM node n
           WHERE r.id = n.nid AND r.langid = n.langid
           )

Многоколонният IN не е преносим поне към SQL Server или Sybase.

Други бележки:

  • JIN може да изисква DISTINCT и не е същото като IN или EXISTS.
  • Последната опция е INTERSECT, която се поддържа по-рядко и работи като IN/EXISTS
  • IIRC някои праисторически версии на MySQL (3.x?) не поддържаха корелацията за EXISTS


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поръчайте артикули в MySQL по фиксиран списък?

  2. Изпълнете необработен SQL при миграция

  3. Как правилно да завъртите в съхранена функция на MySQL?

  4. Как да намеря втората по големина заплата от таблицата на служителите?

  5. Грешка в MySQL:Неправилно използване на UPDATE и LIMIT