這是我的查詢:SQL:語法錯誤與intersect?
-- Sids of suppliers who supply a green part AND a red part
(SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color = "red")
INTERSECT
(SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color = "green");
這是錯誤:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "INTERSECT (SELECT Suppliers.sid FROM Suppliers JOIN Catalog ON Catalog.sid = Sup" on line 6.
我在做什麼錯?
這是架構:
的供應商(SID:整數,SNAME:串,地址字符串)
零件(PID:整數,PNAME:字符串,顏色:字符串)
目錄(SID:整數,PID:整數,成本:真正的)
大膽 =主鍵
看看哪個更快,這個查詢或我的查詢會很有趣 - 我認爲這是更快的,第二次加入或按操作分組。 – Hogan 2010-02-20 17:03:06
@Hogan,* shrug *。這取決於如此多的東西:索引,引擎,多少行,多少內存。無可挑剔的名單......如果問題是找到最快的解決方案,我會採取完全不同的方法來回答這個問題。目前,我處於如下模式:如何重寫標準SQL以獲得等效結果,以防MySQL不支持語法。 – 2010-02-20 17:07:27
點,我想我總是在最快的模式,而不是最明顯的。 – Hogan 2010-02-20 17:42:14