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

MySQL插入时出现‘Subquery returns more than 1 row’错误的解决咨询

问题原因与修复方案

原因

你执行的INSERT语句中,VALUES子句里的子查询(SELECT id AS sap_crf_id FROM wla_sap_crf WHERE so_num = 2147480943)返回了多条记录,但VALUES要求每个字段位置只能对应单个值,数据库无法将多行数据塞进单个字段,因此抛出“Subquery returns more than 1 row”错误。

本质是so_num = 2147480943这个查询条件在wla_sap_crf表中匹配到了多条数据,子查询无法返回唯一值来填充sap_crf_id字段。

修复方法

根据你的业务需求选择以下方案:

  • 如果so_num字段本应唯一:
    先清理wla_sap_crf表中so_num=2147480943的重复记录,保留符合业务逻辑的那条,删除多余数据。之后给so_num添加唯一约束,防止后续再出现重复:
    ALTER TABLE wla_sap_crf ADD UNIQUE KEY uk_so_num (so_num);
    
  • 如果允许一个bl_id对应多个sap_crf_id:
    改用INSERT...SELECT语法批量插入,直接将子查询的所有结果批量写入目标表:
    INSERT INTO wla_crf_extend (bl_id, sap_crf_id)
    SELECT 4747, id FROM wla_sap_crf WHERE so_num = 2147480943;
    
  • 如果只需要子查询返回的某一条特定记录:
    给子查询添加排序和限制条件,比如取id最大的记录(可根据业务调整排序字段):
    INSERT INTO wla_crf_extend (bl_id, sap_crf_id)
    VALUES (4747, (SELECT id FROM wla_sap_crf WHERE so_num = 2147480943 ORDER BY id DESC LIMIT 1));
    

内容的提问来源于stack exchange,提问作者Ratu Batu Hamlo Koto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:18:18