一个很简单的问题,但却老是犯错,记录下来,以供以后遇到相同问题,作下参考
数据库中查询数据的时候,经常会用到 and or 进行条件的编写,如果条件比较长,用到了比较多的and 和or,就需要注意括号的使用了。举例如下:
select * from Table_1
结果为:
id a b
1 A1 B1
2 A1 B2
3 A2 B3
4 A2 B2
5 A5 B3
然后执行下面的SQL:
select * from Table_1 t
where t.id < 4 and t.a like '%1'
or t.b like '%3'
id a b
1 A1 B1
2 A1 B2
3 A2 B3
5 A5 B3
而如果我们执行 两条简单SQL的 并:
select * from Table_1 t
where t.id < 4 and t.a like '%1'
union
select * from Table_1 t
where t.b like '%3'
select * from table where A and B or C
等价于:
select * from table where A and B
union
select * from table where C
所以如果要查询到 A and (B or C),就需要加上括号了
比如上面的例子,将SQL加上括号:
select * from Table_1 t
where t.id < 4 and (t.a like '%1'
or t.b like '%3');
得到的结果是:
id a b
1 A1 B1
2 A1 B2
3 A2 B3