首页新闻找找看学习计划

谁能帮我解答下 疑问

0
悬赏园豆:30 [已解决问题] 解决于 2013-05-06 16:29

语句一:

SELECT *  FROM 

(

select * from   [dbo].[T_SF_Sale]

  where  State='O'

) a

  where   a.[InstitutionTypeCode] like 'V%' or a.InstitutionTypeName is null

 语句二:

SELECT *  FROM [dbo].[T_SF_Sale]

  where   [InstitutionTypeCode] like 'V%' or InstitutionTypeName is null and State='O'

 

请问这2个返回的结果是一样的吗?为什么?

Baby爱薇儿的主页 Baby爱薇儿 | 初学一级 | 园豆:66
提问于:2013-05-06 15:17
< >
分享
最佳答案
1

结果不一样的.

运算符优先级为:and > or

你第一个SQL的条件等效于:

where  ([InstitutionTypeCode] like 'V%' or InstitutionTypeName is null) and State='O'

那么你第二个SQL的条件等效于:

where   [InstitutionTypeCode] like 'V%' or (InstitutionTypeName is null and State='O')

结果自然不一样了.

收获园豆:30
三阶 | 小虾三级 |园豆:1436 | 2013-05-06 16:03
其他回答(2)
0

看起来是一样的,不过这种建议你在数据库中建个查询自己试一下就知道了,这样有什么错也好发现,印象也深点,自己解决了才有成就感,才有动力在程序员路上走更远

Meen | 园豆:321 (菜鸟二级) | 2013-05-06 15:25
0

你自己试一下就知道了,看起来好像是一样的,不过数据量小一点可能没有感觉,如果数据量大了以后你就会感觉到二者的差异了,给我的感觉是后者执行时间币前这短一些

twistting | 园豆:575 (小虾三级) | 2013-05-06 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册