【发布时间】:2016-03-11 10:16:28
【问题描述】:
UPDATE Table_A
SET Column_A =
(SELECT Table_C.Column_C
FROM
Table_A
INNER JOIN
Table_B
ON
Table_A.Column_A1 = Table_B.Column_B
INNER JOIN
Table_C
ON
Table_B.Column_B1 = Table_C.Column_C1
WHERE
Table_C.Column_C2 <> 'T' and
Table_C.Column_C3 = 'T' and
Table_B.Column_B2 = 'T' and Table_B.Column_B3 = 'xyz');
括号中有一个子查询,返回 10 个值,我想用这些值更新 Table_A。 但是更新语句只希望从子查询返回一个值:
ORA-01427: 单行子查询返回多于一行
我怎样才能更新多行而不是只更新一行?
我在此错误上看到的任何线程都无助于解决问题。
已编辑 - 有没有办法使用循环来做到这一点?
【问题讨论】:
-
首先,是SQL server 还是Oracle?其次,请举例说明您的数据(最好是表和插入的 DDL 和 DML 语句)以及您的预期输出示例。
-
也请发表您的完整声明
-
很难说没有看到更新语句是什么。但是,如果您希望子查询中有不止一行,则使用“IN”而不是“=”
-
删除了
sql-server标签,因为错误信息清楚地表明了Oracle -
编辑了更详细的代码。是的,这是甲骨文。
标签: sql oracle sql-update