sql >> データベース >  >> RDS >> Mysql

条件付きでtable2に存在しないtable1から*を選択します

    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)
    

    FYI
    LEFT JOIN / ISNULLとNOTINは、MySQLでは同等です。同じように実行されますが、NOT EXISTSの方が遅く、効率が低くなります。詳細: http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/



    1. Oracleで2つのテーブルを列ごとに比較する方法

    2. codeigniterでストアドプロシージャを呼び出す

    3. ランニングトータル/ランニングバランスを計算する

    4. 複数のオプションを1つのテーブルに保存するにはどうすればよいですか?