sql >> Databáze >  >> RDS >> Mysql

Vyberte * z tabulky1, která neexistuje v tabulce2 s podmíněným

Pomocí 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

Pomocí NOT IN:

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

Pomocí NOT EXISTS:

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

S pozdravem
LEFT JOIN/IS NULL a NOT IN jsou ekvivalentní v MySQL – budou fungovat stejně, zatímco NOT EXISTS je pomalejší/méně efektivní. Další podrobnosti:http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/



  1. Rozdíl mezi mysql_fetch_array a mysql_fetch_row?

  2. Omezení paralelního/Simultánního stahování – Jak zjistit, zda bylo stahování zrušeno?

  3. Jak přeskočit řádky, které porušují omezení při vkládání dat do SQLite

  4. Vložit výsledky uložené procedury do dočasné tabulky