Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - Chọn Tất cả Ngoại trừ những gì có trong Bảng này

Sử dụng 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

Sử dụng 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 = ?)

Sử dụng 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 = ?)

Hiệu suất:

LEFT JOIN/IS NULLNOT IN cung cấp hiệu suất tương đương - NOT EXISTS kém hiệu quả hơn ~ 30%. Xem phần này để biết thêm chi tiết .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ghi các mục vào cơ sở dữ liệu MySQL trong Scrapy

  2. Sửa lỗi Quyền truy cập bị từ chối cho người dùng 'root' @ 'localhost' cho phpMyAdmin

  3. Bảng cập nhật PDO sử dụng mảng

  4. CHỌN / NHÓM THEO - phân đoạn thời gian (10 giây, 30 giây, v.v.)

  5. MYSQL THAM GIA TRÁI với GROUP BY