sql >> Database teknologi >  >> RDS >> Mysql

SQL:Syntaksfejl med intersect?

MySQL, som du ser ud til at bruge, understøtter ikke INTERSECT syntaks. Du bliver nødt til at løse det på en anden måde.

I dette tilfælde er det trivielt - vi mangler kun en liste over alle leverandører, der tilbyder "grøn" og "rød" af en eller anden del- din forespørgsel gider ikke se, om delene i sig selv hænger sammen, så vi kan løse det ret nemt sådan her:

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

Personligt tror jeg ikke, at den oprindelige forespørgsel er en typisk INTERSECT problem. Tag et kig på JOIN løsning tilbudt af Vinko Vrsalovic til en generel løsning til at emulere INTERSECT (hvilket jeg forresten ville foretrække, selvom RDBMS'en faktisk ville tilbyde INTERSECT oprindeligt).



  1. hvordan man viser flere billeder (blob) fra mysql ved hjælp af php?

  2. Opret MySQL-forespørgselsovervågningsbash-script

  3. Håndtering af komplekse WHERE-klausuler med en PHP Query Builder

  4. Sådan bruges BETWEEN-operatøren i SQL Server