使用连接表中的数据更新行,其中每行不同

时间:2014-06-10 23:16:06

标签: sql sql-server-2012

我想更新表中的列,其中每行的值都不同。我想要更新表的值是通过内部联接到另一个表获得的。如何逐行地使用从连接获得的值更新每一行?

这是一个例子......

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。

2 个答案:

答案 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行的类似错误。