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

SQL更新语句出现Subquery returns more than 1 row嵌套CONCAT错误求助

解决UPDATE语句中Subquery returns more than 1 row错误

错误原因

报错的核心问题是你写的(select bar.number from bar)没有添加限定条件,执行时会返回bar表所有行的number值,导致子查询返回多行,无法和前面单个的west.west_id完成拼接。而之前只保留west部分能正常执行,是因为那个子查询通过bar.west_id = west.id关联到了当前更新的行,只会返回单个值。

推荐解决方案(JOIN方式)

用JOIN关联两张表,直接获取对应字段拼接,既简洁又高效,完全避免子查询的问题:

UPDATE bar
JOIN west ON bar.west_id = west.id
SET bar.bar_id = CONCAT(west.west_id, ':', bar.number)

备选方案(子查询修正)

如果一定要用子查询写法,需要给第二个子查询添加限定条件,确保只返回当前更新行的number值(假设bar表有主键id):

UPDATE bar
SET bar.bar_id = CONCAT(
    (SELECT west.west_id FROM west WHERE bar.west_id = west.id),
    ':',
    (SELECT b.number FROM bar b WHERE b.id = bar.id)
)

额外注意事项

  • 确保west表中bar.west_id = west.id的关联是一对一关系,如果是一对多,需要明确取哪一个west_id,比如用MAX(west.west_id)或MIN(west.west_id),根据业务需求处理。
  • 执行更新前建议先验证结果:
SELECT CONCAT(west.west_id, ':', bar.number) AS new_bar_id
FROM bar
JOIN west ON bar.west_id = west.id

确认格式符合预期后再执行UPDATE操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:15:45