Sql 下面的查询是如何工作的
有人能解释一下下面的查询是如何工作的吗。。我有一张叫employee的桌子Sql 下面的查询是如何工作的,sql,oracle,Sql,Oracle,有人能解释一下下面的查询是如何工作的吗。。我有一张叫employee的桌子 id FirstName LastName Email Groupid 1 Paula Brown pb@testdomain.org 12 2 James Smith jim@test.co.uk 12 3 James Connor jc@tes.co.uk 13 select * from employee
id FirstName LastName Email Groupid
1 Paula Brown pb@testdomain.org 12
2 James Smith jim@test.co.uk 12
3 James Connor jc@tes.co.uk 13
select * from employee where groupid=12 AND id NOT IN (1) OR id NOT IN (2)
这个查询是如何工作的?我试图理解AND子句是如何与OR一起工作的。任何帮助都将不胜感激……并且优先于或,因此该条件被解释为
(group=12 but id <> 1) OR (id <> 2)
所有三条记录都符合此条件:
1 Paula Brown pb@testdomain.org 12 -- id <> 2
2 James Smith jim@test.co.uk 12 -- group=12 and id <> 1
3 James Connor jc@tes.co.uk 13 -- id <> 2
如果要查找不同的求值顺序,可以使用括号强制求值。并且优先于或,因此该条件被解释为
(group=12 but id <> 1) OR (id <> 2)
所有三条记录都符合此条件:
1 Paula Brown pb@testdomain.org 12 -- id <> 2
2 James Smith jim@test.co.uk 12 -- group=12 and id <> 1
3 James Connor jc@tes.co.uk 13 -- id <> 2
如果您正在寻找不同的求值顺序,可以使用括号强制求值。谢谢dasblinkenlight。如何解释此查询?从员工中选择*,其中groupid=12,id为1或id为2@questborn-由于group=12和id=1或id=2,因此它将匹配前两条记录。显示优先顺序。如果有任何歧义的可能性,包括有人试图稍后阅读代码,我建议始终使用括号来清楚说明,即使您不想更改求值顺序。谢谢dasblinkenlight。如何解释此查询?从员工中选择*,其中groupid=12,id为1或id为2@questborn-由于group=12和id=1或id=2,因此它将匹配前两条记录。显示优先顺序。如果存在任何歧义的可能性,包括对于稍后试图阅读代码的人,我建议始终使用括号来清楚说明,即使您不想更改求值顺序。