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

Cách tìm xem một danh sách / tập hợp có nằm chính xác trong một danh sách khác hay không

Bạn vẫn có thể sử dụng having , nhưng thử nghiệm cho từng sản phẩm - và nếu không có bất kỳ sản phẩm nào khác:

SELECT o.order_id
FROM orders o
GROUP BY o.order_id
HAVING SUM( product_id = 222 ) > 0 AND
       SUM( product_id = 555 ) > 0 AND
       SUM( product_id NOT IN (222, 555) ) = 0 ;

Lưu ý rằng điều này sử dụng viết tắt MySQL, trong đó các biểu thức boolean được coi là số với 1 cho true và 0 cho sai. Cú pháp chuẩn là:

HAVING SUM( CASE WHEN product_id = 222 THEN 1 ELSE 0 END) > 0 AND
       SUM( CASE WHEN product_id = 555 THEN 1 ELSE 0 END ) > 0 AND
       SUM( CASE WHEN product_id NOT IN (222, 555) THEN 1 ELSE 0 END ) = 0 ;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Singleton thay thế cho PHP PDO

  2. Sử dụng Oracle JDeveloper với Dịch vụ Cơ sở dữ liệu MySQL trên Nền tảng Đám mây Oracle, Phần 2

  3. Dấu thời gian buộc Hibernate duy trì / tải dưới dạng UTC

  4. Lựa chọn ngẫu nhiên nhanh nhất TRONG ĐÓ cột X là Y (NULL)

  5. Cách nhóm các diễn đàn khác nhau thành các loại PHP