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

H2数据库去重:保留指定最新日期行的全字段查询方法

在H2数据库中按指定列去重并保留最新完整行的实现方案

你需要基于Product列去重,保留每个Product对应Date最大的完整行(包含ID、Customer等所有字段),但原有的分组查询只能拿到Product和Date,SQLite的写法在H2中不适用,这里提供两种可行的H2实现方式:

方法一:子查询关联原表

先通过子查询获取每个Product的最新日期,再关联原表匹配出对应的完整行:

SELECT t.*
FROM your_table t
INNER JOIN (
    SELECT "Product", MAX("Date") AS max_date
    FROM your_table
    GROUP BY "Product"
) t_max ON t."Product" = t_max."Product" AND t."Date" = t_max.max_date

注意:如果同一个Product存在多条日期相同的最新记录,该方法会返回所有这些记录。

方法二:窗口函数筛选(推荐)

利用H2支持的窗口函数ROW_NUMBER(),按Product分组后对Date降序排序,取每个分组的第一行:

SELECT *
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY "Product" ORDER BY "Date" DESC) AS rn
    FROM your_table
) t
WHERE rn = 1

如果需要在日期相同时确保唯一行,可以在ORDER BY后追加其他唯一字段(如ID DESC),比如ORDER BY "Date" DESC, "ID" DESC。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:12:03