前言
今天,线上环境出了个问题,导致被叼了一顿,特此纪念一下。
导致bug的代码片段:
原因是红色框框里用了or没有加(),导致查询出来的数据对不上,所有条件加起来的数量不等于总数。
原因可见:此篇博客
实践一下:
sql:
SELECT * from t_student where sex =1 and class ='1' OR class is null and age <14;
等价于:
SELECT * from t_student where sex =1 and class ='1' UNION SELECT * from t_student where class is null and age <14;
正确写法:
SELECT * from t_student where sex =1 and (class ='1' OR class is null) and age <14;