在Sql Join语句中使用括号

时间:2018-01-10 09:44:39

标签: sql sql-server tsql

我想知道

之间有什么区别
INNER JOIN TB_PACKAGE AS B
    ON (A.CdPackage = B.CdPackage)

INNER JOIN TB_PACKAGE AS B
    ON A.CdPackage = B.CdPackage

当我应该使用括号时,我需要某种解释。

这是整个查询,它是一个存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [DB].[SP_UP_NOTES]
  @COD_ROTE  NUMERIC(10)
 ,@COD_STATS   NUMERIC(10)
AS

BEGIN

  UPDATE C
  SET C.IdStatus = @COD_STATS
  FROM DB.TB_NOTES AS A
  INNER JOIN OPMDM.TB_PACKAGE AS B
    ON (A.CdPackage= B.CdPackage)
  INNER JOIN OPMDM.TB_NOTES AS C
    ON (A.CdNotes = c.CdNotes)
  WHERE B.STATS = @COD_ROTE;

END

2 个答案:

答案 0 :(得分:2)

完全没有区别。您需要括号的唯一时间是您需要执行需要强制执行A​​ND / OR评估顺序的复杂联接。

答案 1 :(得分:0)

在您的上述代码中,代码有和没有括号之间没有区别。但在某些情况下,使用括号可能会产生差异

例如如果您正在使用AND和OR运算符

SELECT
*
FROM YourTable
WHERE 
(
id > 10 and Name Like 'A%'
)
or
(
Id < 10 and name Like '%A'
)

在上述情况下使用括号产生一些效果,因为我想获得符合条件的记录id > 10 and Name Like 'A%'Id < 10 and name Like '%A'

这里我想分组2 AND条件并生成满足任一条件的记录列表,所以我使用括号