【发布时间】:2018-07-02 07:46:25
【问题描述】:
我知道下面的子查询应该返回 1 行。 您能告诉我如何更改下面的 UPDATE 查询以使用映射表的行更新 test1 表吗?
update test1 a set daily_value = ( select daily_value from mapping b where a.table_name = b.table_name);
*
ERROR at line 1:
ORA-01427: single-row subquery returns more than one row
create table test1
( table_name varchar2(10),
daily_value varchar2(10)
)
/
insert into test1(table_name) values ('first');
insert into test1(table_name) values ('first');
commit;
create table mapping
( table_name varchar2(10),
daily_value varchar2(10)
)
/
insert into mapping values ('first','value_1');
insert into mapping values ('first','value_2');
commit;
TEST1 table should have below data
TABLE_NAME DAILY_VALUE
FIRST value_1
FIRST value_2
【问题讨论】:
-
子查询返回两行
value_1和value_2 -
test1中有两个相等的行;你如何决定哪个得到value_1,哪个得到value_2? -
我不需要区分 test1 表中的 value_1 和 value_2。我只需要用 2 个值更新 test1。
-
您能否编辑您的帖子并描述表 test1 的值在更新后应如何显示?
-
没有 Ansi-SQL 方法可以做到这一点,因为您的表不提供要匹配的键。
标签: sql oracle sql-update subquery