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

获取过去24小时内匹配数据且含最大值的通知表记录

嘿,针对你要获取过去24小时内数据匹配且包含最大值记录的需求,我结合你的notifications表结构整理了几种实用的解决方案:

解决方案分场景说明

场景1:直接获取过去24小时内主键最大的单条记录

如果你的需求是拿到近24小时里notification_id(自增主键,天然代表插入顺序)最大的那条记录,这条SQL最直接:

SELECT *
FROM notifications
WHERE created_time >= NOW() - INTERVAL 24 HOUR
ORDER BY notification_id DESC
LIMIT 1;

逻辑很简单:先筛选出时间范围内的所有记录,按主键降序排序后取第一条,就是最大值对应的记录。

场景2:按维度分组,获取每组的最大值记录

比如你想按source(数据源)或者not_type(通知类型)分组,拿到每个分组在过去24小时内的最大值记录,可以用子查询关联的方式:

-- 按source分组的示例
SELECT n.*
FROM notifications n
JOIN (
    -- 先找出每个source在近24小时内的最大notification_id
    SELECT source, MAX(notification_id) AS max_notification_id
    FROM notifications
    WHERE created_time >= NOW() - INTERVAL 24 HOUR
    GROUP BY source
) AS group_max ON n.source = group_max.source 
                AND n.notification_id = group_max.max_notification_id
WHERE n.created_time >= NOW() - INTERVAL 24 HOUR;

要是想按not_type分组,只需要把GROUP BY source改成GROUP BY not_type,关联条件也对应调整就行。

场景3:获取过去24小时内创建时间最新的记录

如果你的“最大值”指的是created_time(最新创建的通知),可以用这个写法:

SELECT *
FROM notifications
WHERE created_time >= NOW() - INTERVAL 24 HOUR
AND created_time = (
    SELECT MAX(created_time)
    FROM notifications
    WHERE created_time >= NOW() - INTERVAL 24 HOUR
);

这个语句会返回所有在近24小时内创建时间等于最大时间的记录(如果有多个通知同一时间创建,都会被返回)。

自定义匹配条件的扩展

如果你的“数据匹配”是指特定筛选规则(比如只找not_type = 'system_alert'的通知),只需要在所有WHERE子句里添加对应的条件就行。比如场景1加上类型筛选:

SELECT *
FROM notifications
WHERE created_time >= NOW() - INTERVAL 24 HOUR
AND not_type = 'system_alert' -- 这里替换成你的匹配条件
ORDER BY notification_id DESC
LIMIT 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:00:30