以下两个SQL语句之间有什么区别:
SELECT * FROM Customers
WHERE Country='France' OR Country='Mexico'
和
SELECT * FROM Customers
WHERE (Country='France' OR Country='Mexico')
为什么这两个语句会返回不同的结果?
答案 0 :(得分:3)
没有区别。
declare @t table (id int identity (1,1), country varchar(20), b int)
insert @t (country, b) values ('france',1),('france',2),('france',3),('mexico',1),('mexico',4), ('brazil',1)
select * from @t where (country = 'france' or country = 'mexico')
select * from @t where country = 'france' or country = 'mexico'
-- both return rows 1-5
然而,如果你添加另一个子句(例如AND
),那么你需要考虑哪些条款具有优先权。
select * from @t
where (country = 'france' or country = 'mexico') and b = 1
-- returns rows 1 and 4
select * from @t
where country = 'france' or country = 'mexico' and b = 1
-- returns rows 1-4
答案 1 :(得分:0)
此查询没有区别,这两个查询应返回相同的结果 - 我已经对此事件进行了测试。这是肯定的。 clouse根据逻辑规律工作的SQL: http://en.wikipedia.org/wiki/Propositional_logic#Basic_and_derived_argument_forms
所以这种情况下的括号什么都不做。