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

permintaan mysql untuk memilih semuanya kecuali

Menggunakan NOT IN:

SELECT w.*
  FROM WIDGET w
 WHERE w.widget_id NOT IN (SELECT c.widget
                             FROM CHOSEN c
                            WHERE c.user_id = $user_id)

Menggunakan NOT EXISTS:

SELECT w.*
  FROM WIDGET w
 WHERE NOT EXISTS (SELECT NULL
                     FROM CHOSEN c
                    WHERE c.widget_id = w.widget_id 
                      AND c.user_id = $user_id)

LEFT JOIN/IS NULL:

   SELECT w.*
     FROM WIDGET w
LEFT JOIN CHOSEN c ON c.widget_id = w.widget
                  AND c.user_id = $user_id
    WHERE w.widget IS NULL

Kinerja:

Jika kolom yang dibandingkan (widget_id di kedua tabel) tidak dapat dibatalkan, LEFT JOIN/IS NULL melakukan yang terbaik di MySQL . Jika kolom dapat dibatalkan (nilainya bisa NULL), NOT IN atau NOT EXISTS berkinerja lebih baik .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengubah Ukuran Gambar PHP

  2. SQL - kode kesalahan 1005 dengan nomor kesalahan 121

  3. Langkah-langkah untuk Menginstal MySQL8 di CentOS

  4. kesalahan saat menggunakan mysql_real_escape_string()

  5. Cara Menyisipkan Beberapa Baris di MySQL