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

SQL使用子查询查询近6个月数据无返回结果问题求助

问题原因分析
  • 逻辑错误:原SQL中MONTH(FromDate) = 6的作用是筛选月份为6月的记录,和「查询当日往前推6个月」的需求完全不符,这是无数据返回的核心原因。
  • 字段类型兼容问题:表中FromDate字段为CHAR(16)字符串类型,直接使用日期函数计算会失效,需要先转换为标准日期格式。
  • 子查询逻辑错误:原SQL的子查询从同一张Service表筛选日期,既冗余也没有关联Allocation表的分配起始日期,不符合需求中以分配起始日期作为判断依据的要求。
修正后的SQL语句(MySQL环境)
SELECT TransportName, TransportCost, TransportMaxDist
FROM Service
WHERE TransportID IN (
    SELECT TransportID
    FROM Allocation
    WHERE STR_TO_DATE(FromDate, '%Y-%m-%d') >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
);
说明
  • 子查询先从Allocation表筛选出分配起始日期在最近6个月内的运输服务ID,用STR_TO_DATE将字符串类型的日期转换为标准日期格式参与计算
  • 外层查询根据子查询返回的服务ID,从Service表中取出对应的服务名称、成本、最大行驶距离
  • 用CURDATE()动态获取当前日期,没有硬编码日期,符合需求要求
  • 你提供的样例数据日期均为2020、2021年,早于当前时间的最近6个月范围,测试时可将样例日期调整为最近6个月内即可看到返回结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:54:05