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

MySQL如何筛选内连接后最后一条关联备注匹配指定内容的流程

MySQL单条SQL查询实现方案

完全可以用单条SQL实现需求,以下提供两种适配不同MySQL版本的写法:

方案1:MySQL 8.0及以上版本(窗口函数实现,性能更优)

通过ROW_NUMBER()窗口函数给每个流程的备注按创建时间倒序编号,取编号为1的最新备注筛选内容后关联流程表:

SELECT DISTINCT p.*
FROM processes p
INNER JOIN (
    SELECT 
        process_id,
        content,
        -- 按流程分组,备注创建时间倒序编号,编号为1就是该流程最新的备注
        ROW_NUMBER() OVER (PARTITION BY process_id ORDER BY creation_date DESC) AS rn
    FROM notes
) latest_note ON p.id = latest_note.process_id
WHERE latest_note.rn = 1 
  -- 内容包含指定文本用LIKE,完全匹配直接用 = 'some_content'
  AND latest_note.content LIKE '%some_content%';

方案2:兼容MySQL 5.x及更低版本

先通过分组查询拿到每个流程的最新备注创建时间,再关联定位到对应备注筛选后关联流程表:

SELECT DISTINCT p.*
FROM processes p
-- 关联备注表
INNER JOIN notes n ON p.id = n.process_id
-- 关联子查询拿到的每个流程最新备注的创建时间
INNER JOIN (
    SELECT process_id, MAX(creation_date) AS max_create_date
    FROM notes
    GROUP BY process_id
) t ON n.process_id = t.process_id AND n.creation_date = t.max_create_date
WHERE n.content LIKE '%some_content%';

注意事项

如果存在同一流程同一个creation_date有多条备注的场景,上述SQL会返回所有符合内容要求的同时间最新备注对应的流程,符合业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:06:02