Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:Синтактична грешка с intersect?

MySQL, който изглежда използвате, не поддържа INTERSECT синтаксис. Ще трябва да го решите по друг начин.

В този случай е тривиално - нуждаем се само от списък на всички доставчици, които предлагат "зелени" и "червени" на някои части - вашата заявка не се притеснява да види дали самите части са свързани, така че можем да го решим доста лесно така:

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

Лично аз не вярвам, че оригиналната заявка е типична INTERSECT проблем. Разгледайте JOIN решение, предложено от Винко Врсалович за общо решение за емулиране на INTERSECT (което между другото бих предпочел, дори ако RDBMS всъщност предлага INTERSECT естествено).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изявление за изтриване на Mysql с ограничение

  2. SQL UPDATE с подзаявка, която препраща към същата таблица в MySQL

  3. Защо може да има само една колона TIMESTAMP с CURRENT_TIMESTAMP в клаузата DEFAULT?

  4. Mysql - Последните 30 дни

  5. Как да възстановим mysql база данни в XAMPP?