Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona * dalla tabella1 che non esiste nella tabella2 con condizionale

Usando 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

Usando NON IN:

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

Usando NON ESISTE:

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

Cordiali saluti
LEFT JOIN/IS NULL e NOT IN sono equivalenti in MySQL:funzioneranno allo stesso modo, mentre NOT EXISTS è più lento/meno efficiente. Per maggiori dettagli:http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/