sql >> Databasteknik >  >> RDS >> Mysql

Välj * från tabell1 som inte finns i tabell2 med villkorlig

Använder 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

Använder NOT IN:

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

Använder INTE EXISTS:

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

FYI
LEFT JOIN/IS NULL och NOT IN är likvärdiga i MySQL - de kommer att fungera på samma sätt, medan NOT EXISTS är långsammare/mindre effektivt. För mer information:http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/



  1. En lösning för markörstödet är inte en implementerad funktion för SQL Server Parallel DataWarehousing TDS-fel

  2. fel när du använder mysql_real_escape_string()

  3. python:hur får man aviseringar om mysql-databasändringar?

  4. COPY med dynamiskt filnamn