sql >> Databasteknik >  >> RDS >> Mysql

Hämta poster från en tabell där det inte finns en post i en annan

Med 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)

Med 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

Med 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)

Av de listade alternativen är NOT IN och LEFT JOIN/IS NULL är likvärdiga även om jag föredrar NOT IN eftersom den är mer läsbar.



  1. Hur NOT LIKE fungerar i MySQL

  2. Hur man löser ORA-28000 kontot är låst

  3. Oracle UTL_FILE läste CSV-filrader

  4. Att skriva en fil med flera trådar