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

SQL:Lỗi cú pháp với giao nhau?

MySQL, mà bạn có vẻ đang sử dụng, không hỗ trợ INTERSECT cú pháp. Bạn sẽ phải giải quyết nó theo cách khác.

Trong trường hợp này, nó là nhỏ - chúng tôi chỉ cần một danh sách tất cả các nhà cung cấp cung cấp "màu xanh lá cây" và "màu đỏ" của một số bộ phận- truy vấn của bạn không bận tâm xem liệu bản thân các bộ phận có liên quan với nhau hay không, vì vậy chúng tôi có thể giải quyết nó khá dễ dàng như thế này:

SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color IN ('red', 'green')
GROUP BY Suppliers.sid
HAVING COUNT(DISTINCT Parts.color) = 2

Cá nhân tôi không tin rằng truy vấn ban đầu là một INTERSECT điển hình vấn đề. Hãy xem JOIN giải pháp do Vinko Vrsalovic cung cấp cho một giải pháp chung để mô phỏng INTERSECT (mà tôi muốn btw thích hơn ngay cả khi RDBMS trên thực tế sẽ cung cấp INTERSECT nguyên bả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. Độ dài chỉ mục varchar của MySQL

  2. Bán kính / kết quả gần nhất - API Google Maps

  3. Phương ngữ ngủ đông cho MySQL 8?

  4. Hiệu suất MySQL:nhiều bảng so với chỉ mục trên một bảng và phân vùng

  5. Mô phỏng chức năng lag trong MySQL