【 生产环境 】
【 OB 】
【 4.2.1.7 】
【问题描述】
当前有一条SQL:
SELECT
xxx
FROM xxx
where did = ? or uuid in (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) and ts >= xxx and ts < xxx order by ts desc limit 1",
如 SELECT * FROM USER WHERE ID = 1 AND STATUS = 2 OR STATUS = 3,本来是想查询USER表中id为1的状态为2或者3的数据,其实只会这样执行,and比or优先,结果是查询id为1和状态为2,或者状态为3的数据。
解决方法,如果是同字段,如上例子,可SELECT * FROM USER WHERE ID = 1 AND STATUS in (2,3),或者SELECT * FROM USER WHERE ID = 1 AND (STATUS = 2 OR STATUS = 3),就可以了。