You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正SQL子查询ORA-00913: too many values错误(不使用视图)

错误原因

ORA-00913错误的根源是IN子句里的子查询返回了两列数据(CIFNO和SUM(LIMIT)),但IN只能匹配单一列的取值,多列返回会导致匹配逻辑冲突。

修正方案1:精简子查询返回列

直接修改子查询,只返回用于匹配的CIFNO列(SUM(LIMIT)仅作为过滤条件,不需要返回):

UPDATE PRE_LB 
SET PR_NPR = 'PR' 
WHERE CIFNO IN (SELECT CIFNO  -- 仅保留需要匹配的列
                FROM PRE_LB 
                WHERE LTWPB IN ('SE','ED') 
                GROUP BY CIFNO 
                HAVING SUM(LIMIT) <= 2000000)
  AND LTWPB IN ('SE', 'ED');

修正方案2:改用EXISTS关联查询

如果数据量较大,用EXISTS做关联查询性能更优,逻辑也更直观:

UPDATE PRE_LB t1
SET PR_NPR = 'PR'
WHERE LTWPB IN ('SE', 'ED')
  AND EXISTS (SELECT 1
              FROM PRE_LB t2
              WHERE t2.CIFNO = t1.CIFNO
                AND t2.LTWPB IN ('SE','ED')
              GROUP BY t2.CIFNO
              HAVING SUM(t2.LIMIT) <= 2000000);

内容的提问来源于stack exchange,提问作者Bala S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 10:38:16