Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL:Syntaxfehler bei Intersect?

MySQL, das Sie anscheinend verwenden, unterstützt INTERSECT nicht Syntax. Du musst es anders lösen.

In diesem Fall ist es trivial - wir brauchen nur eine Liste aller Lieferanten, die "grüne" und "rote" Teile anbieten - Ihre Anfrage kümmert sich nicht darum, zu sehen, ob die Teile selbst verwandt sind, also können wir sie ganz einfach lösen so:

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

Ich persönlich glaube nicht, dass die ursprüngliche Abfrage ein typischer INTERSECT ist Problem. Sehen Sie sich den JOIN an von Vinko Vrsalovic angebotene Lösung für eine allgemeine Lösung zur Emulation des INTERSECT (was ich übrigens bevorzugen würde, selbst wenn das RDBMS tatsächlich INTERSECT anbieten würde nativ).