这段代码有什么问题?我一直在ERROR 1064 (42000): You have an error in your SQL syntax
SELECT clientReport.id
WHERE clientReport.rowNumber NOT EXISTS (
SELECT clientReport.rowNumber FROM report02, clientReport
WHERE report02.id=clientReport.id);
答案 0 :(得分:2)
我假设你想做类似的事情:
SELECT clientReport.id
FROM clientReport
LEFT JOIN report02 ON(report02.id = clientReport.id)
WHERE report02.id is null;
这将从clientReport返回所有在report02中没有相应条目的ID。
替代方案可能是:
SELECT clientReport.id FROM clientReport
WHERE clientReport.rowNumber NOT IN (
SELECT clientReport.rowNumber
FROM report02, clientReport
WHERE report02.id=clientReport.id);
答案 1 :(得分:1)
您在第一个选择语句中遗漏了FROM
:
SELECT clientReport.id
FROM clientReport '<--- need this
WHERE clientReport.rowNumber NOT EXISTS (
SELECT clientReport.rowNumber FROM report02, clientReport
WHERE report02.id=clientReport.id);
答案 2 :(得分:1)
MySQL服务器返回的完整错误消息是什么?您应该收到如下错误消息:
You have an error in your SQL syntax near `NOT EXISTS`
您还应该考虑使用RIGHT JOIN而不是子查询选择,因为在这种情况下,RIGHT JOIN似乎就是您想要的。
编辑:此外,由于在运行子查询时观察到的性能损失,建议使用非常有选择性的JOIN,也就是说,当MySQL GA实现时,在正常查询中再次使用子查询是可以的在子查询中使用LIMIT。这将大大降低性能。
答案 3 :(得分:1)
您忘记在主查询中添加from子句。
SELECT clientReport.id from clientReport
WHERE clientReport.rowNumber NOT IN (
SELECT clientReport.rowNumber FROM report02, clientReport
WHERE report02.id=clientReport.id);
答案 4 :(得分:1)
您可能需要NOT IN
而不是NOT EXISTS