mssql sqlserver 关键字优先级分析 (and or )


摘要:
在sql脚本编写中,大多数情况下,我们需要使用多条件进行数据检索,
在多个条件中,我们需要使用 and 或 or 关键字对查询条件进行连接,
下文将举例说明 and 和 or对查询条件的组合顺序
————————————————————-
涉及多条件连接,通常需要采用小括号将条件进行包含,达到增大优先级的效果


例:

create table A(keyId int identity,info1 varchar(20),info2 varchar(20),info3 varchar(20),info4 varchar(20))
go

insert into A(info1,info2,info3,info4)values('a1','b1','c1','d1')
insert into A(info1,info2,info3,info4)values('a2','b2','c2','d2')
insert into A(info1,info2,info3,info4)values('a3','b3','c3','d3')
insert into A(info1,info2,info3,info4)values('a4','b4','c4','d4')
insert into A(info1,info2,info3,info4)values('a5','b5','c5','d5')
insert into A(info1,info2,info3,info4)values('a6','b6','c6','d6')
go
/*sql 脚本采用 从左向右依次解析的方式编译脚本*/
select * from A where info1 ='a1' and info2 ='b1' or info3='c2' 
/*以上脚本由于 or 优先级比 and低 
 所以脚本等价于  select * from A where (info1 ='a1' and info2 ='b1') or info3='c2'  */
go
select * from A where info2 ='b1' or info3='c2'  and info1 ='a1' 
/*以上脚本由于 or 优先级比 and低 
 所以脚本等价于  select * from A where info2 ='b1' or (info3='c2'  and info1 ='a1')  */
go
 
truncate table A
drop table A