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

MySQL如何查询父级关联版本中最新logged_at且item_id最小的记录

解法1:使用窗口函数(适配你提到的row_number思路)

你的需求本质是做两级排序取第一条:优先按logged_at倒序(最新的排最前),相同时间下按item_id升序(最小的排最前),直接在row_number的排序规则里定义两级排序即可:

SELECT id, item_id, logged_at, parent_id
FROM (
    SELECT 
        *,
        -- 先按时间倒序,再按item_id正序排序
        ROW_NUMBER() OVER (ORDER BY logged_at DESC, item_id ASC) AS rn
    FROM version
    -- 如果需要限定特定parent,可取消下一行注释
    -- WHERE parent_id = 1
) AS sorted_version
WHERE rn = 1;

解法2:子查询实现(逻辑更直观)

分两步筛选:先拿到最大的logged_at值,再在符合该时间的记录里取最小item_id的第一条:

SELECT *
FROM version
WHERE logged_at = (SELECT MAX(logged_at) FROM version)
-- 如果需要限定特定parent,可加条件 AND parent_id = 1
ORDER BY item_id ASC
LIMIT 1;

结果验证

针对你给出的示例数据,两种写法都会返回id为3的记录,完全符合预期:

iditem_idlogged_atparent_id
312021-12-01 21:40:001

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:01