想知道是否有人会知道为什么在此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进行优先级排序?
看一下SQL Server中的运算符优先级(您尚未指定,但我想对于所有RDBMS都是一样的)。这意味着 在 比1绑定更紧密的绑定 之前 ,对AND(不带括号) 进行求值 。
因此,在您的特定情况下,没有括号,条件是:
employe.service=service.code_serv AND employe.nom LIKE 'A%'
或者
employe.nom LIKE 'B%'
1故意未在SQL中指定评估顺序,从而允许语言有更多可能的重新排序,保证语言从左到右或优先顺序进行评估。