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

MySQL - Pilih Semua Kecuali yang ada di Tabel ini

Menggunakan LEFT JOIN/IS NULL

   SELECT DISTINCT
          i.data
     FROM IMAGE i
     JOIN USER_IMAGE ui ON ui.image_id = i.id
LEFT JOIN USER u ON u.id = ui.user_id
                AND u.user = ?
    WHERE u.id IS NULL

Menggunakan NOT IN

SELECT DISTINCT
       i.data
  FROM IMAGE i
  JOIN USER_IMAGE ui ON ui.image_id = i.id
 WHERE ui.user_id NOT IN (SELECT u.id
                            FROM USER u
                           WHERE u.user = ?)

Menggunakan NOT EXISTS

SELECT DISTINCT
       i.data
  FROM IMAGE i
  JOIN USER_IMAGE ui ON ui.image_id = i.id
 WHERE NOT EXISTS(SELECT NULL
                    FROM USER u
                   WHERE u.id = ui.user_id
                     AND u.user = ?)

Kinerja:

LEFT JOIN/IS NULL dan NOT IN memberikan kinerja yang setara - NOT EXISTS adalah ~ 30% kurang efisien. Lihat ini untuk detail lebih lanjut .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Periksa apakah baris ada di database sebelum memasukkan

  2. Operator penggabungan MySQL

  3. Bagaimana cara mendapatkan data dari database untuk melihat halaman di laravel?

  4. Sisipkan MySQL jika tidak ada / jika tidak ada

  5. Spring Boot JPA:Melewati Beberapa Nilai untuk Parameter yang Sama (JPQL)