Oracle 更新: ORA-01427: 单行子查询返回多行

UPDATE TMP_COLUMNS 
SET COLUMNNAME = /SELECT COLUMN_NAME FROM
user_tab_columns usertable
WHERE
table_name = table_Name
AND usertable.column_id = TMP_COLUMNS.idcolumn/
WHERE EXISTS /SELECT COLUMN_NAME
FROM
user_tab_columns usertable
WHERE
table_name = table_Name
AND usertable.column_id = TMP_COLUMNS.idcolumn/;

COMMIT;


我得到一个错误
ORA-01427: single-row subquery returns more than one row
已邀请:

龙天

赞同来自:

你做:


UPDATE TMP_COLUMNS SET COLUMNNAME = / *SOMETHING* /;


在哪里 SOMETHING 是一个


SELECT COLUMN_NAME FROM user_tab_columns usertable WHERE table_name = table_Name AND usertable.column_id = TMP_COLUMNS.idcolumn


这是返回多行的东西,因此您的更新被打破,因为它应该知道更新的新值。 /它应该是一个值,而不是几行/.

跑 "某物" 单独并纠正它以返回正确的值。

仍然:不要写这么长的线 ;/

小姐请别说爱

赞同来自:

如..所示 @mnagel, 由于您的子查询事实,出现错误 /
SET COLUMNNAME = SELECT ...

/ 返回多行。

问题可能是在这里:


WHERE table_name = table_Name


相反,您需要做这样的事情:


WHERE table_name = tmp_columns.something


或者如果在
tmp_columns

没有列名称表 , 您需要将表名指定为常量:


WHERE table_name = 'something'

要回复问题请先登录注册