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

SQL多表关联求助:无法获取dp_id与pm_id组合的最新日期记录

问题分析与修正

你的SQL返回所有行而非最新记录,主要有以下几个问题:

1. 关联表A时未匹配最新日期

子查询A1已经算出每个dp_id+cm_id组合的最新日期latest_run,但你关联表A时只匹配了dp_id和cm_id,没有把a.last_run_date和A1.latest_run关联起来。这会导致该组合下所有符合日期范围的行都被返回,而不是仅最新的那一条。

2. 表B的关联条件存在笔误

关联表B时,b.cm_id = a.dp_id明显是错误的,应该改为b.cm_id = a.cm_id,否则会用错误的字段关联,导致数据匹配异常。

3. 日期过滤逻辑不合理

当前的WHERE条件是过滤表A中所有日期在指定区间的行,但你需要的是每个组合的最新日期本身在该区间内,应该把日期过滤放到子查询中,或者在关联时确保最新日期符合条件。


修正后的SQL

SELECT 
    b.a_i_id,
    b.a_e_id,
    a.last_run_date,
    a.cm_id,
    a.dp_id
FROM (
    SELECT 
        dp_id,
        cm_id,
        MAX(last_run_date) AS latest_run
    FROM a
    WHERE CAST(last_run_date AS DATE) BETWEEN '2023-04-28' AND '2023-04-30'
    GROUP BY dp_id, cm_id
) A1
INNER JOIN a 
    ON a.dp_id = A1.dp_id
    AND a.cm_id = A1.cm_id
    AND a.last_run_date = A1.latest_run -- 新增:匹配最新日期
INNER JOIN b 
    ON b.dp_id = a.dp_id
    AND b.cm_id = a.cm_id -- 修正笔误

另外注意你需求中提到的是dp_id与pm_id组合,但SQL里用的是cm_id,如果是笔误,需要统一替换成pm_id。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:27:28