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

Изберете * от таблица 1, която не съществува в таблица 2 с условно

Използване на LEFT JOIN/IS NULL:

   SELECT t.*
     FROM TABLE_LIST t
LEFT JOIN TABLE_LOG tl ON tl.jid = t.jid
    WHERE tl.jid IS NULL

Използване на NOT IN:

SELECT t.*
  FROM TABLE_LIST t
 WHERE t.jid NOT IN (SELECT tl.jid
                       FROM TABLE_LOG tl
                   GROUP BY tl.jid)

Използване на NOT EXISTS:

SELECT t.*
  FROM TABLE_LIST t
 WHERE NOT EXISTS(SELECT NULL
                    FROM TABLE_LOG tl
                   WHERE tl.jid = t.jid)

За информация
LEFT JOIN/IS NULL и NOT IN са еквивалентни в MySQL - те ще изпълняват същото, докато NOT EXISTS е по-бавен/по-малко ефективен. За повече подробности:http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите множество резултати от един CallableStatement?

  2. MYSQL - Невъзможно е да се създаде външен ключ

  3. Оптимална заявка за извличане на кумулативна сума в MySQL

  4. XML грешка при амперсанд (&)

  5. MySQL обобщена таблица с динамични заглавки, базирани на данни от една колона