MySQL不存在的地方

时间:2011-05-11 10:26:22

标签: mysql sql select join

这段代码有什么问题?我一直在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);

5 个答案:

答案 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