语句一:
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个返回的结果是一样的吗?为什么?
结果不一样的.
运算符优先级为: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')
结果自然不一样了.
看起来是一样的,不过这种建议你在数据库中建个查询自己试一下就知道了,这样有什么错也好发现,印象也深点,自己解决了才有成就感,才有动力在程序员路上走更远
你自己试一下就知道了,看起来好像是一样的,不过数据量小一点可能没有感觉,如果数据量大了以后你就会感觉到二者的差异了,给我的感觉是后者执行时间币前这短一些