SQL Server正在更新从另一个表获取id

SQL Server正在更新从另一个表获取id,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我必须更新表中的一些行,但我需要从另一个表中获取引用id。表格结构类似于以下内容: CoInvDept +--------------+--------+--------+ | coinvdeptid | coinv | code | +--------------+--------+--------+ Coinv +--------------+-------------+ | coinv | itemnumber | +--------------+-------

我必须更新表中的一些行,但我需要从另一个表中获取引用id。表格结构类似于以下内容:

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

Coinv
+--------------+-------------+
| coinv        | itemnumber  | 
+--------------+-------------+
我需要更新代码,但我有itemnumber。我正在使用SQLServer2008。 到目前为止


我想这就是你想要的:

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


两者都应该起作用:)

您将使用
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
,因为这是您在表结构中指定的内容。

问题是什么?您的SQL不工作吗?以什么方式?编辑:nm。我重读了一遍,看到了什么是行不通的。
UPDATE T1

SET code='ABC123'

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

AND T2.itemnumber='12345678'
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'