我通过以下方式编写我的连接查询
UPDATE UPLOAD_TEMP
SET UPLOAD_TEMP.Borr_Add_Req = t2.YesNoResponse,
FROM UPLOAD_TEMP t1
INNER JOIN GB_RequiredFields t2 ON t1.State = t2.StateCode
AND t1.County_Id = t2.CountyId
AND t1.Group_code = t2.Doc_type_group_code
然而它也可以这样编写
UPDATE UPLOAD_TEMP
SET UPLOAD_TEMP.Borr_Add_Req = t2.YesNoResponse,
FROM UPLOAD_TEMP t1
INNER JOIN GB_RequiredFields t2 ON t1.State = t2.StateCode
WHERE t1.County_Id = t2.CountyId
AND t1.Group_code = t2.Doc_type_group_code
两者之间是否存在差异,这是首选的编码方式。
答案 0 :(得分:4)
这是一个古老的论点 - 是否在JOIN子句中指定其他WHERE参数或作为单独的WHERE。
我更喜欢定义 only 那些真正构成JOIN子句内部JOIN的参数的方法,以及稍后在WHERE子句中的所有其他参数。对我来说似乎更干净。
但我认为最终,在功能上,它是一样的 - 这只是个人偏好的问题,真的。
答案 1 :(得分:1)
两个查询都将具有相同的结果,并且您的sql-server应该以相同的方式处理它们。所以没有任何区别 - 只是你想要怎么做。 你甚至可以通过以下方式实现:
UPDATE UPLOAD_TEMP
SET UPLOAD_TEMP.Borr_Add_Req = t2.YesNoResponse,
FROM UPLOAD_TEMP t1, GB_RequiredFields t2
WHERE
t1.State = t2.StateCode
AND t1.County_Id = t2.CountyId
AND t1.Group_code = t2.Doc_type_group_code