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

truy vấn mysql để chọn mọi thứ ngoại trừ

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

Sử dụng KHÔNG TỒN TẠI:

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)

THAM GIA TRÁI / LÀ KHÔNG ĐỦ:

   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

Hiệu suất:

Nếu các cột được so sánh (widget_id trong một trong hai bảng) không thể nullable, LEFT JOIN / IS NULL hoạt động tốt nhất trên MySQL . Nếu cột không thể sử dụng được (giá trị có thể là NULL), KHÔNG CÓ hoặc KHÔNG TỒN TẠI hoạt động tốt hơn .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để kết xuất tệp MySQL mà không có Khóa ngoại qua dòng lệnh?

  2. Trích xuất dữ liệu từ json bên trong trường mysql

  3. cách thêm ngày (DateTime.now) vào cơ sở dữ liệu mySql trong C #

  4. Đặt đúng innodb_log_file_size trong mysql

  5. Làm thế nào để kiểm tra xem một ngày có nằm giữa date1 và date2 hay không bằng cách sử dụng mysql?