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

SQL报错Subquery returned more than 1 value的含义及触发原因咨询

报错含义

你收到的报错核心规则是:当子查询被用作输出表达式,或者跟在=、!=、<这类比较运算符之后时,SQL强制要求该子查询只能返回1行1列的单个结果。你提交的子查询返回了多条结果,触发了语法校验失败。

代码违规点

你的CASE语句中WHEN tagged_id != ' '分支下的子查询SELECT tagged_id FROM stock没有加过滤条件,会直接返回stock表全表所有行的tagged_id值,数据库无法判断你要把哪一行的结果赋值给当前查询行的Tag字段,所以抛出报错。

修复方案

如果你的需求是当前行的tagged_id不为空格时直接用该行的tagged_id,否则用该行的ps_id,完全不需要嵌套子查询,直接简化即可:

SELECT
     CASE
         WHEN tagged_id != ' ' 
             THEN tagged_id 
             ELSE ps_id 
     END AS 'Tag'
FROM
    stock

如果确实有子查询的使用需求,必须通过WHERE条件限定子查询仅返回1行,或者使用MAX()、MIN()这类聚合函数强制返回单个值,示例如下:

SELECT
     CASE
         WHEN tagged_id != ' ' 
             THEN (SELECT MAX(tagged_id) FROM stock) 
             ELSE ps_id 
     END AS 'Tag'
FROM
    stock

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:24:05