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

SQLite技术问询:获取同类重复事件的最早记录

解决events表重复标题取最早记录的查询问题

针对你的需求,这里提供两种可行的SQL查询方案:

方案一:使用窗口函数(推荐,语法简洁高效)

SELECT id, title, event_date, url
FROM (
    SELECT 
        id, 
        title, 
        event_date, 
        url,
        -- 按标题分组,每组内按事件日期升序编号
        ROW_NUMBER() OVER (PARTITION BY title ORDER BY event_date ASC) AS rn
    FROM events
    WHERE event_date > DATE()
) AS ranked_events
-- 取每组内编号为1的记录(即该标题下最早的有效事件)
WHERE rn = 1;

核心是用ROW_NUMBER()窗口函数给每个标题下的记录按日期排序,直接筛选出最早的那条,不需要复杂的关联操作。

方案二:关联子查询(兼容不支持窗口函数的旧版本数据库)

SELECT e.id, e.title, e.event_date, e.url
FROM events e
INNER JOIN (
    -- 先找出每个标题下符合条件的最早日期
    SELECT title, MIN(event_date) AS min_event_date
    FROM events
    WHERE event_date > DATE()
    GROUP BY title
) AS min_dates 
-- 通过标题和对应最早日期关联,获取完整记录
ON e.title = min_dates.title AND e.event_date = min_dates.min_event_date
WHERE e.event_date > DATE();

子查询先聚合每个标题的最小有效日期,再和原表关联匹配,得到对应日期的完整记录,避开了直接GROUP BY无法获取非聚合字段的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:03:14