Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez * de la table1 qui n'existe pas dans la table2 avec condition

Utilisation de 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

Utiliser NOT IN :

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

Utiliser NON EXISTE :

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

Pour info
LEFT JOIN/IS NULL et NOT IN sont équivalents dans MySQL - ils fonctionneront de la même manière, tandis que NOT EXISTS est plus lent/moins efficace. Pour plus de détails :http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/