从oracle中另外两个表的联接更新表的一列

时间:2020-07-09 10:36:15

标签: oracle join dblink

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-显示“值太多”。

1 个答案:

答案 0 :(得分:0)

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

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

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);
相关问题