sql >> Database >  >> RDS >> Mysql

SQL:syntaxisfout met intersectie?

MySQL, dat u lijkt te gebruiken, ondersteunt de INTERSECT syntaxis. Je zult het op een andere manier moeten oplossen.

In dit geval is het triviaal - we hebben alleen een lijst nodig van alle leveranciers die "groen" en "rood" van een onderdeel aanbieden - uw vraag neemt niet de moeite om te zien of de onderdelen zelf gerelateerd zijn, dus we kunnen het vrij gemakkelijk oplossen zoals dit:

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

Persoonlijk geloof ik niet dat de oorspronkelijke zoekopdracht een typische INTERSECT is probleem. Bekijk de JOIN oplossing aangeboden door Vinko Vrsalovic voor een algemene oplossing voor het emuleren van de INTERSECT (waar ik trouwens de voorkeur aan zou geven, zelfs als de RDBMS in feite INTERSECT zou aanbieden native).



  1. MySQL-query om klanten te vinden die twee specifieke producten hebben besteld

  2. TRANSACTION_MUTEX en toegang tot transacties voor meerdere sessies

  3. Migreren van AnswerHub naar WordPress:A Tale of 10 Technologies

  4. Hoe kom ik achter mijn MySQL-URL, host, poort en gebruikersnaam?