Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobierz rekordy z jednej tabeli, w której nie ma rekordu w innej

Używanie 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)

Korzystanie z 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

Korzystanie NIE ISTNIEJE:

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)

Spośród wymienionych opcji NOT IN i LEFT JOIN/IS NULL są równoważne, chociaż wolę NOT IN ponieważ jest bardziej czytelny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy ktoś może wyjaśnić klucze obce MySQL?

  2. Jakiego typu danych użyć dla pola haszowanego hasła i jakiej długości?

  3. Połącz z lewej strony lub wybierz z wielu tabel, używając przecinka (,)

  4. jQuery Validator Plugin - sprawdź istniejącą nazwę użytkownika/e-mail w bazie mysql

  5. Budowanie bezpiecznego publicznego API z PHP/MYSQL