Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неуспешна заявка за актуализиране с грешка:1175

  2. JDBC MySql практики за обединяване на връзки, за да се избегне изчерпаният пул за връзки

  3. PHP isset() с множество параметри

  4. Добавете List<int> към параметър на mysql

  5. MySQL срещу SQL Server срещу Oracle