MySQL子查询不工作,生成错误代码1064
此查询不起作用MySQL子查询不工作,生成错误代码1064,sql,mysql,mysql-error-1064,Sql,Mysql,Mysql Error 1064,此查询不起作用 SELECT * FROM Catalogue WHERE Catalogue.ID IN ( SELECT ID_catalogue FROM Categories WHERE Categories.Product_type='xxx' ) 错误代码:1064 你的密码有错误 “选择”附近的SQL语法 ID\u分类目录,其中 类别。产品类型为 第2行 好的,那是因为我使用的是一个非常旧的MySQL版本 我想得到的是 SELECT * FROM Catalogue WH
SELECT * FROM Catalogue WHERE Catalogue.ID IN (
SELECT ID_catalogue FROM Categories WHERE Categories.Product_type='xxx'
)
错误代码:1064
你的密码有错误
“选择”附近的SQL语法
ID\u分类目录,其中
类别。产品类型为
第2行
好的,那是因为我使用的是一个非常旧的MySQL版本
我想得到的是
SELECT * FROM Catalogue WHERE Product_type='xxx' OR Catalogue.ID IN (
SELECT ID_catalogue FROM Categories WHERE Categories.Product_type='xxx'
)
这方面有什么等价物吗
谢谢您的评论。您的查询没有问题。很可能是MySQL的版本造成了您的问题。如果您使用的是MySQL版本,您使用的是什么MySQL版本?看起来你有4.0版本:-你在运行哪个版本的MySQL?子查询支持于2003年在4.1中添加。评论中已经介绍了这一点。不要盗取虫族的名声。@dan虫族应该在回答中说明这一点。另请参见其他响应。你也应该责备那个人是小偷。我不知道从其他评论中学习有什么不对,但我有勇气把它写进一个答案,对还是错。@johnny:我不喜欢猜测。只有当我确信答案正确时,我才会回答。在这种特殊情况下,它也可以是
select
subquery之前的某种非类型字符。@zerkms我不是说你必须这样做。我更多的是回应丹而不是你。对不起,如果你生气了。有几次我本应该给出答案而不是评论。我明白了。非常感谢。是3.23:SIs对于3.23版有没有类似的查询?@aximili:3.23的最新版本是在2003年9月11日发布的。我强烈建议您更新它:-您必须将此查询重写为联接。这相当简单。但你真的应该听从虫族的建议,升级这个服务器。你已经落后时代十年了。哈哈,谢谢你的发布日期,很高兴知道=p很抱歉,我的查询中实际包含OR,请参阅我更新的问题。谢谢虫族和丹!
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'