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

MySQL 5.6中从两表每组获取最后一条注册记录的查询求助

解决方案

针对MySQL 5.6版本,由于不支持窗口函数,我们可以通过子查询筛选每个(val1, val2)组合的最新日期,再关联原表获取对应字段的方式实现需求:

查询语句

SELECT
    combined.val1,
    combined.val2,
    t1.num1,
    t2.num2,
    combined.latest_created_date AS created_date
FROM (
    -- 获取每个(val1, val2)组合的最新created_date
    SELECT
        val1,
        val2,
        MAX(created_date) AS latest_created_date
    FROM (
        -- 合并两个表的日期记录,覆盖所有可能的日期条目
        SELECT val1, val2, created_date FROM table1
        UNION ALL
        SELECT val1, val2, created_date FROM table2
    ) AS all_dates
    GROUP BY val1, val2
) AS combined
-- 关联table1获取对应num1
LEFT JOIN table1 t1
    ON combined.val1 = t1.val1
    AND combined.val2 = t1.val2
    AND combined.latest_created_date = t1.created_date
-- 关联table2获取对应num2
LEFT JOIN table2 t2
    ON combined.val1 = t2.val1
    AND combined.val2 = t2.val2
    AND combined.latest_created_date = t2.created_date;

逻辑说明

  1. 合并日期记录:用UNION ALL合并table1和table2的val1、val2、created_date字段,确保不遗漏任何日期数据。
  2. 筛选最新日期:通过GROUP BY val1, val2结合MAX(created_date),得到每个唯一组合的最新日期。
  3. 关联原表取数:将筛选出的最新日期结果分别与table1、table2关联,匹配val1、val2和最新日期,获取对应的num1和num2。

预期结果

执行该查询后将返回:

val1val2num1num2created_date
XA333332022-11-03
XB666662022-11-06
XC888882022-11-08
XD999992022-11-09
YA11111112022-11-11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:01:37