sql >> Base de Datos >  >> RDS >> Mysql

SQL:¿Error de sintaxis con intersección?

MySQL, que parece estar usando, no es compatible con INTERSECT sintaxis. Vas a tener que resolverlo de otra manera.

En este caso, es trivial -solo necesitamos una lista de todos los proveedores que ofrecen "verde" y "rojo" de alguna parte- su consulta no molesta para ver si las partes en sí están relacionadas, por lo que podemos resolverlo con bastante facilidad. así:

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

Personalmente, no creo que la consulta original sea un INTERSECT típico. problema. Echa un vistazo a JOIN solución ofrecida por Vinko Vrsalovic para una solución general para emular el INTERSECT (que, por cierto, preferiría incluso si el RDBMS de hecho ofreciera INTERSECT de forma nativa).