SQL中or条件在括号里面和不在括号里面的区别
写SQL时发现or条件在括号内和不在括号内查出的内容差异很大,例如:
SELECT * FROM Table_1 where name=‘王五’ and ( class=‘python’ or sex=‘男’)
SELECT * FROM Table_1 where name=‘王五’ and class=‘python’ or sex=‘男’
下面看个实例:
1.新建一个表
2.查询or在括号内的结果
SELECT * FROM Table_1 where name='王五' and (class='JAVA' or sex='女')
分析:该sql查询出来的内容都是“王五”,但是把“王五、女、python”的内容也查出来了,所以在括号内的or是,满足前面条件name=‘王五’的前提下,符合or其中一个条件的内容都查出来。
3.查询or不带括号的结果
SELECT * FROM Table_1 where name='王五' and class='python' or sex='男'
分析:该sql把“王五、python”的信息都查出来了,并且还把“张三、男、java”信息也查出来了,因为他的sex=‘男’,所以不带括号的or是不管前置条件,只要符合or的条件都查询出来。
4.查询or不带括号的结果 ,把sex和class条件换一个位置
SELECT * FROM Table_1 where name='王五' and sex='男' or class='python'
分析:该sql把“王五”的信息都查出来了,并且还把“张三、女、python”信息也查出来了,因为他的class=‘python’,所以不带括号的or是不管前置条件,只要符合or的条件都查询出来。
总结
or条件写在括号里面是满足前面条件的前提下,符合其中一个or条件的内容都查出来;
or条件不加括号是不管前面的条件,只需要符合or条件的内容都查出来,查询结果等于前面的and条件加上单独符合or条件的内容。
如有不正确的位置,欢迎指正。