我有以下准备好的语句查询:
SELECT id FROM CustomerSettings WHERE id >= ? OR displayNameType = ? AND id < ? LIMIT 5 OFFSET 1
&#34; id&lt;&#34;部分查询被忽略。奇怪的是,如果我在OR语句之前移动语句,那么它将由MySQL数据库引擎正确评估。这种预期的行为似乎很奇怪。我还尝试将OR子句放在括号中,但遗憾的是,这也没有用;紧跟OR之后的AND子句仍然被忽略。
答案 0 :(得分:5)
这是由于operator precedence。 AND
在OR
之前绑定,因此您的查询为WHERE (id >= ?) OR (displayNameType = ? AND id < ?)
。事情的顺序很重要。我建议使用括号来明确AND
和OR
的顺序。