Sql 子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做<<;=>;,等

Sql 子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做<<;=>;,等,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一个列必须在引用另一个表(tbl\u one)ID的表(tbl\u two)中更新 我当前的update语句如下所示: UPDATE tbl_two SET col_idnum = (SELECT tbl_one.col_enrollmentid FROM dbo.tbl_one JOIN dbo.tbl_two ON tbl_one.appid = tbl_two.appid WHERE tbl_two.programid = 132

我有一个列必须在引用另一个表(
tbl\u one
)ID的表(
tbl\u two
)中更新

我当前的update语句如下所示:

UPDATE tbl_two
SET col_idnum = 
   (SELECT tbl_one.col_enrollmentid FROM dbo.tbl_one 
        JOIN dbo.tbl_two ON tbl_one.appid = tbl_two.appid
        WHERE tbl_two.programid = 132
        AND tbl_one.isfirst = 1
        AND tbl_one.programtypeid = 132)
WHERE col_programid = 132
这会引发一个错误:

子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时

嵌套的select语句只返回列(tbl_one.col_enrollmentid),但它确实返回47804行结果。这是它应该返回的。这是预期的结果

我在这里搜索了解决方案,但我所发现的只是对
=
语句使用
IN
语句,但我认为不可能使用“IN”语句执行更新

有人能在SQL Server 2008中帮助我进行此查询吗

提前感谢

使用“加入…”

UPDATE  t2
SET col_idnum = t1.col_enrollmentid 
from
dbo.tbl_one t1
JOIN dbo.tbl_two t2
 ON tbl_one.appid = tbl_two.appid
        and  t1.programid = 132
        AND t1.isfirst = 1
        AND t2.programtypeid = 132
使用join

UPDATE  t2
SET col_idnum = t1.col_enrollmentid 
from
dbo.tbl_one t1
JOIN dbo.tbl_two t2
 ON tbl_one.appid = tbl_two.appid
        and  t1.programid = 132
        AND t1.isfirst = 1
        AND t2.programtypeid = 132
您试图将列值设置为什么?不能将单个列的值设置为48000个结果。请使用一小部分数据来说明您正在尝试执行的操作。您正在尝试将列值设置为什么?不能将单个列的值设置为48000个结果。请用一小部分数据来说明你想做什么。