首页 > 解决方案 > 从 oracle 中的另外两个表的连接更新表的一列

问题描述

UPDATE CUSTOMER_FEEDBACK_POLICY SET POLICYHOLDER_NAME=(select A.first_name||' '||A.last_name "Name",B.POLICY_NO from 
NIC_GS.T_NIC_POLICY_CUST_INFO@DBLINK_EBAO A JOIN NIC_GS.T_POLICY_general@DBLINK_EBAO B ON A.POLICY_ID=B.POLICY_ID where 
B.POLICY_NO IN(SELECT POLICY_NUMBER FROM CUSTOMER_FEEDBACK_POLICY)) 
where  POLICY_NUMBER in(SELECT POLICY_NUMBER FROM CUSTOMER_FEEDBACK_POLICY);

SQL 错误:ORA-00913:太多值 00913。00000 - 显示“太多值”。

标签: oraclejoindblink

解决方案


ORA-00913: too many values--> 您只想更新单列但使用子查询传递 2 个值(子查询中有 2 个列)

只需B.POLICY_NOSELECT子查询的子句中删除,如下所示:

UPDATE CUSTOMER_FEEDBACK_POLICY O
   SET POLICYHOLDER_NAME=(select MAX(A.first_name||' '||A.last_name) "Name" 
                            from NIC_GS.T_NIC_POLICY_CUST_INFO@DBLINK_EBAO A 
                            JOIN NIC_GS.T_POLICY_general@DBLINK_EBAO B 
                              ON A.POLICY_ID=B.POLICY_ID 
                           where B.POLICY_NO = O.POLICY_NUMBER);

推荐阅读