sql >> Databáze >  >> RDS >> Mysql

SQL:Chyba syntaxe s průsečíkem?

MySQL, které zřejmě používáte, nepodporuje INTERSECT syntax. Budete to muset vyřešit jinak.

V tomto případě je to triviální -potřebujeme pouze seznam všech dodavatelů, kteří nabízejí "zelené" a "červené" některého dílu- Váš dotaz nás neobtěžuje zjistit, zda spolu díly samy souvisí, takže to vyřešíme celkem snadno takhle:

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

Osobně si nemyslím, že původní dotaz je typickým INTERSECT problém. Podívejte se na JOIN řešení nabízené Vinkem Vrsalovićem pro obecné řešení emulace INTERSECT (což bych btw preferoval, i když by RDBMS ve skutečnosti nabízel INTERSECT nativně).



  1. Jak odstranit soubory v SQL Server 2019

  2. Instalace Oracle 12c Standard Edition na Windows 10 Professional

  3. Je možné vložit nový řádek na začátek tabulky MySQL?

  4. Platné formáty časových řetězců pro funkce data/času SQLite