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

如何在MySQL中获取每个脚本的最新运行记录?

解决方案

你的需求是获取每个script对应的最新lastRun记录,之前的查询方法存在问题:

  • DISTINCT会对script、lastRun、processed三个字段的组合去重,由于每条记录的lastRun都不同,所以会返回所有记录。
  • GROUP BY script在MySQL非严格模式下,会返回每个分组的随机一条记录,无法保证是最新的lastRun对应的记录。

以下两种方法可以实现需求:

方法1:子查询关联(兼容所有MySQL版本)

先通过子查询找出每个script的最大lastRun,再关联原表获取完整记录:

SELECT t.script, t.lastRun, t.processed
FROM your_table t
INNER JOIN (
    SELECT script, MAX(lastRun) AS max_lastRun
    FROM your_table
    GROUP BY script
) t_max 
ON t.script = t_max.script AND t.lastRun = t_max.max_lastRun
ORDER BY t.lastRun ASC;

方法2:窗口函数(MySQL 8.0及以上版本可用)

使用ROW_NUMBER()窗口函数,按script分组后以lastRun倒序排序,取每组的第一条(即最新记录):

SELECT script, lastRun, processed
FROM (
    SELECT 
        script, 
        lastRun, 
        processed,
        ROW_NUMBER() OVER (PARTITION BY script ORDER BY lastRun DESC) AS rn
    FROM your_table
) t
WHERE rn = 1
ORDER BY lastRun ASC;

注意:将上述语句中的your_table替换为你的实际表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:41:12