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

Loại trừ các bản ghi nếu bảng bên phải khớp

Bạn có thể sử dụng NOT EXISTS

SELECT a.id, a.name
FROM A
WHERE NOT EXISTS
(
    SELECT 1 FROM B
    WHERE b.A = a.id AND b.cond = 'X'
)

Tuy nhiên, tôi luôn quên rằng MySql là rdbms (?) Duy nhất có vấn đề để tối ưu hóa một EXISTS / NOT EXISTS . Vì vậy, sẽ hiệu quả hơn một chút nếu sử dụng LEFT JOIN cách tiếp cận.

http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/

Trong MS SQL-Server, tốt hơn nên sử dụng NOT EXISTS .

http://sqlperformance.com/2012/12 / t-sql-queries / left-anti-semi-join



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận ngày ngay cả khi nó không tồn tại trong bảng từ câu lệnh SQL SELECT

  2. chèn trường khóa chính `id` autoincrement một cách rõ ràng trong laravel 5.2

  3. DATE_FORMAT trong một truy vấn trong CodeIgniter bằng Active Record không hoạt động

  4. PHP PDO - Hàng số

  5. Sao chép hai cột từ bảng này sang bảng khác, nhưng chỉ sao chép các giá trị duy nhất