此查询不起作用
SELECT * FROM Catalogue WHERE Catalogue.ID IN (
SELECT ID_catalogue FROM Categories WHERE Categories.Product_type='xxx'
)
错误代码:1064 你有错误 您的SQL语法靠近'SELECT ID_catalogue FROM Categories WHERE Categories.Product_type ='xxx')'at 第2行
好的,那是因为我使用的是非常古老的MySQL版本。
我想要的是
SELECT * FROM Catalogue WHERE Product_type='xxx' OR Catalogue.ID IN (
SELECT ID_catalogue FROM Categories WHERE Categories.Product_type='xxx'
)
有没有相应的东西?
感谢您的所有意见。
答案 0 :(得分:4)
如果您使用的是mysql版本< = 4.0 - 那么这就是原因,因为子查询是在4.1中添加的
SELECT c.*,
g.ID_catalogue
FROM Catalogue c
LEFT JOIN Categories g ON g.ID_catalogue = c.ID
AND g.Product_type='xxx'
HAVING ID_catalogue IS NOT NULL
OR Product_type = 'xxx'
您应该为表ID_catalogue + Product_type
添加复合索引Categories
并为表Product_type
添加索引Catalogue
以快速执行此查询
答案 1 :(得分:3)
您的查询没有任何问题。这是MySQL的版本,很可能是你的问题。