2014-06-10 19 views
0

我想更新表中每列的值不同的列。我想要更新表的值是通過內部聯接到另一個表獲得的。我該如何逐行更新從連接中獲取的值的每一行?使用連接表中的數據更新每行不同的行

下面是一個例子....

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

試試這個。

UPDATE Division 
SET LicenseNo=Practice.LicenseNo 
FROM Division 
INNER JOIN Practice 
    ON Division.DivisionId = Practice.DivisionId 
1

我會設置這是這樣的:

UPDATE Division d SET LicenceNo = 
    (SELECT LicenceNo FROM Practice 
    WHERE DivisionId = d.DivisionId) 

這隻能是因爲你保證DivisionId是實踐獨一無二的。如果不是這種情況,它會拋出一個'單行子查詢返回多於一行'的錯誤。

相關問題