这是我的查询: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