Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ambil catatan dari satu tabel di mana tidak ada catatan di meja lain

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

Menggunakan 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

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

Dari opsi yang tercantum, NOT IN dan LEFT JOIN/IS NULL setara meskipun saya lebih suka NOT IN karena lebih mudah dibaca.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih semua baris duplikat berdasarkan satu atau dua kolom?

  2. Cara Menghapus Spasi Utama di MySQL

  3. Salin nilai dari satu kolom ke kolom lain di tabel yang sama

  4. Contoh hubungan banyak-ke-banyak

  5. Doctrine 2 Query Builder abs Fungsi