2014-04-09 54 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,因为这是您在表结构中指定的内容。

相关问题