2014-04-09 56 views
0

我必須更新表中的某些行,但我需要從另一個表中獲取引用ID。表結構類似於下面:SQL Server更新從另一個表中獲取ID

CoInvDept 
+--------------+--------+--------+ 
| coinvdeptid | coinv | code | 
+--------------+--------+--------+ 

Coinv 
+--------------+-------------+ 
| coinv  | itemnumber | 
+--------------+-------------+ 

我需要更新代碼,但我有itemnumber。我使用SQL Server 2008的 到目前爲止

UPDATE coinvdept 
SET code = 'ABC123' 
WHERE (SELECT coinvid WHERE itemnumber = '12345678') 
+0

問題是什麼?你的SQL不工作?以什麼方式?編輯:nm。我重讀它看到什麼不會工作。 –

回答

0

我想這是你所追求的:

UPDATE coinvdept 
SET code = 'ABC123' 
WHERE coinv IN (SELECT coinvid FROM coinv WHERE itemnumber = '12345678') 
0
UPDATE coinvdept 
SET code = 'ABC123' 
WHERE coinv = (SELECT coinvid FROM coinv WHERE itemnumber = '12345678') 

OR

UPDATE T1 

SET code='ABC123' 

FROM coinvdept as T1 
INNER JOIN Coinv as T2 ON T1.coinv=T2.coinv 

AND T2.itemnumber='12345678' 

雙方應努力:)

0

您可以使用in操作來匹配子查詢結果的價值,你需要在子查詢中from條款:

update 
    coinvdept 
set 
    code = 'ABC123' 
where 
    coinv in (select coinv from coinv where itemnumber = '12345678') 

你也可以使用一個連接:

update 
    d 
set 
    code = 'ABC123' 
from 
    coinvdept d 
    inner join coinv c on c.coinv = d.coinv 
where 
    c.itemnumber = '12345678' 

注:我用的字段名coinv,而不是您在查詢中使用的coinvid,因爲這是您在表結構中指定的內容。

相關問題