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

如何在主查询中对比子查询返回的多行结果

解决子查询返回多行导致的报错问题

你遇到的More than one value was returned by a subquery错误,是因为将返回多行结果的子查询用在了需要单一值的场景(比如直接用=对比)。以下是两种可行的解决方案:

方案1:通过JOIN关联子查询结果

将子查询作为临时表,与主表通过id字段关联,这样可以同时获取主表数据和对应id的最大日期,方便做对比:

SELECT t.id, t.created_date, sub.maxdate
FROM your_table t
INNER JOIN (
    -- 原分组子查询,获取每个id的最大created_date
    SELECT id, MAX(created_date) AS maxdate 
    FROM your_table 
    GROUP BY id
) sub ON t.id = sub.id
-- 按需添加对比条件,比如筛选等于最大日期的记录
WHERE t.created_date = sub.maxdate;

方案2:使用相关子查询

如果只需判断单条记录的created_date是否为对应id的最大值,可以用相关子查询,确保子查询仅返回当前主查询行对应id的单一最大值:

SELECT id, created_date
FROM your_table t
WHERE created_date = (
    SELECT MAX(created_date)
    FROM your_table
    WHERE id = t.id -- 关联主查询的id,限制子查询范围
);

补充说明

如果你的需求是筛选出created_date小于对应id最大日期的记录,只需调整WHERE条件即可,比如方案1中改成WHERE t.created_date < sub.maxdate。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:40:32