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

查询各FID对应最大complete_date的rating问题求助

解决每个FID对应最新complete_date的rating查询问题

问题根源

你的查询语句存在语法错误:在Inner Join (...)A后面多写了一个分号,导致ON关联子句无法被正确识别,这是语句无法返回预期结果的直接原因。

修正后的正确查询(关联子查询写法)

SELECT c.fid, c.rating, c.complete_date 
FROM crr c
INNER JOIN (
    SELECT fid, MAX(complete_date) AS d 
    FROM crr
    GROUP BY fid
) A ON c.fid = A.fid AND c.complete_date = A.d;

更简洁的窗口函数写法

如果使用的数据库支持窗口函数(如MySQL 8+、PostgreSQL、SQL Server等),可以用更直观高效的方式实现需求:

SELECT fid, rating, complete_date
FROM (
    SELECT 
        fid, 
        rating, 
        complete_date,
        ROW_NUMBER() OVER (PARTITION BY fid ORDER BY complete_date DESC) AS rn
    FROM crr
) t
WHERE rn = 1;

补充说明

  1. 你的complete_date字段为varchar类型,但由于格式是规范的YYYY/MM/DD,字符串排序逻辑和日期排序一致,因此MAX(complete_date)能正确获取最新日期。
  2. 建议优化表结构:将complete_date字段类型改为DATE(或DATETIME),避免因字符串格式不规范(如2021/1/5这种单数字月/日)导致的排序错误,同时能利用日期类型的内置函数进行更灵活的日期操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:05:21