我想更新表中的列,其中每行的值都不同。我想要更新表的值是通过内部联接到另一个表获得的。如何逐行地使用从连接获得的值更新每一行?
这是一个例子......
DivisionId DivisionName LicenseNo
----------------------------------------------
1 Crimminal Law NULL
2 Civil Law NULL
3 Corporate Law NULL
PracticeId DivisionId PracticeName LicenseNo
----------------------------------------------------------
11 1 Law Firm A 243527
12 2 Law Firm B 364802
13 3 Law Firm C 394843
SELECT Practice.LicenseNo
FROM Practice
INNER JOIN Division
ON Division.DivisionId = Practice.DivisionId
我知道如何获取我想要的值,但我不确定如何将Practice.LicenseNo
放入除法表中的LicenseNo
字段。我正在使用SQL Server 2012。
答案 0 :(得分:2)
试试这个。
UPDATE Division
SET LicenseNo=Practice.LicenseNo
FROM Division
INNER JOIN Practice
ON Division.DivisionId = Practice.DivisionId
答案 1 :(得分:1)
我会这样设置:
UPDATE Division d SET LicenceNo =
(SELECT LicenceNo FROM Practice
WHERE DivisionId = d.DivisionId)
这只能起作用,因为您确保DivisionId对于Practice来说是唯一的。如果不是这种情况,它将抛出一个单行子查询返回超过1行的类似错误。