小编典典

SQL括号在OR子句中使用

sql

想知道是否有人会知道为什么在此SQL中使用括号:因此,格式如下:

名称以A或B开头的员工的姓名,位置和服务部门(法语粗略翻译)。

我以下列方式回答:

SELECT service.nom_serv, localite.ville, localite.departemen
FROM service, localite, employe
WHERE service.code_loc=localite.code_loc
AND employe.service=service.code_serv
AND ((employe.nom LIKE 'A%') OR (employe.nom LIKE 'B%'))

基本上,在与WHERE有关的最后一个AND的地方,我不能简单地不用括号来使SQL为我选择名称以A或B开头的员工吗?这样放置括号有什么区别?为何括号会被双重使用?还是因为在AND之前在最后一个子句中对OR进行优先级排序?


阅读 246

收藏
2021-03-17

共1个答案

小编典典

看一下SQL Server中的运算符优先级(您尚未指定,但我想对于所有RDBMS都是一样的)。这意味着 比1绑定更紧密的绑定
之前 ,对AND(不带括号) 进行求值

因此,在您的特定情况下,没有括号,条件是:

  • employe.service=service.code_serv AND employe.nom LIKE 'A%'

或者

  • employe.nom LIKE 'B%'

1故意未在SQL中指定评估顺序,从而允许语言有更多可能的重新排序,保证语言从左到右或优先顺序进行评估。

2021-03-17