运行 查询时无结果

No results when running query

我创建了一个查询,如果我在 ORDER BY 语句上方有一个带引号的语句,该查询将不会显示任何结果,但如果我删除 WHERE 查询中的引号,ORDER BY 语句将起作用,但我需要where 查询。

例如:

WHERE S.STUDENT_ID = E.STUDENT_ID AND Z.STATE = 'New York' OR Z.STATE = 'MA'
ORDER BY Z.ZIP;

如果我删除 AND Z.STATE = 'New York' OR Z.STATE = 'MA' 它会起作用

由于 SQL 中的操作顺序规则,ANDOR 具有更高的 优先级 ,因此您当前的 WHERE 子句被解释为:

WHERE (S.STUDENT_ID = E.STUDENT_ID AND Z.STATE = 'New York') OR Z.STATE = 'MA'
ORDER BY Z.ZIP;

所以只有当学生 ID 匹配 并且 州是纽约时,这才会成立。您可能有以下意图:

WHERE S.STUDENT_ID = E.STUDENT_ID AND (Z.STATE = 'New York' OR Z.STATE = 'MA')
ORDER BY Z.ZIP;

你可以在这里使用的一个技巧来避免这个陷阱是使用 WHERE IN (...):

WHERE S.STUDENT_ID = E.STUDENT_ID AND Z.STATE IN ('New York', 'MA')
ORDER BY Z.ZIP;

这避免了使用括号的需要,所以你不会出错。