忽略OR子句后的MySQL AND子句

时间:2015-05-11 00:44:33

标签: mysql

我有以下准备好的语句查询:

 SELECT id FROM CustomerSettings WHERE id  >= ? OR displayNameType  = ? AND id  < ? LIMIT 5 OFFSET 1

&#34; id&lt;&#34;部分查询被忽略。奇怪的是,如果我在OR语句之前移动语句,那么它将由MySQL数据库引擎正确评估。这种预期的行为似乎很奇怪。我还尝试将OR子句放在括号中,但遗憾的是,这也没有用;紧跟OR之后的AND子句仍然被忽略。

1 个答案:

答案 0 :(得分:5)

这是由于operator precedenceANDOR之前绑定,因此您的查询为WHERE (id >= ?) OR (displayNameType = ? AND id < ?)。事情的顺序很重要。我建议使用括号来明确ANDOR的顺序。