【发布时间】:2017-03-10 08:18:57
【问题描述】:
我有一个必须在表 (tbl_two) 中更新的列,它引用另一个表 (tbl_one) 中的 ID。
我当前的更新语句如下所示:
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
这会引发错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
嵌套的 select 语句仅返回列(tbl_one.col_enrollmentid),但它确实返回 47,804 行结果。这是它应该返回的。这就是预期的结果。
我在这里搜索了解决方案,但我发现的只是使用IN 语句来处理= 语句,但我认为不可能使用“IN”语句执行更新.
谁能帮我解决 SQL Server 2008 中的这个查询?
提前致谢
【问题讨论】:
-
什么你试图将列值设置为?您不能将单个列值设置为 48,000 个结果。请使用一小组数据来说明您要做什么。
标签: sql sql-server sql-server-2008 tsql