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

別のテーブルにレコードがないテーブルからレコードをフェッチする

    NOT INの使用:

    SELECT s.*
      FROM SURVEYS s
     WHERE s.userid != 28
       AND s.surveyid NOT IN (SELECT r.survey_id
                                FROM RESPONSES r
                               WHERE r.userid = 28)
    

    LEFT JOIN / IS NULLの使用:

       SELECT s.*
         FROM SURVEYS s
    LEFT JOIN RESPONSES r ON r.survey_id = s.surveyid
                         AND r.user_id = 28
        WHERE s.userid != 28
          AND r.userid IS NULL
    

    NOT EXISTSの使用:

    SELECT s.*
      FROM SURVEYS s
     WHERE s.userid != 28
       AND NOT EXISTS (SELECT NULL
                         FROM RESPONSES r
                        WHERE r.userid = 28
                          AND r.survey_id = s.surveyid)
    

    リストされているオプションのうち、NOT IN およびLEFT JOIN/IS NULL 私はNOT INを好みますが、同等です 読みやすいからです。



    1. SQLServerテーブルの既存の列にデフォルトの制約を追加する方法-SQLServer/TSQLチュートリアルパート91

    2. postgreSQLで配列内部インデックスにアクセスする方法は?

    3. PHPを使用して列のすべての値を取得するにはどうすればよいですか?

    4. 3文字の単語を使用したmysqlの全文検索