按date分组并基于importtime提取每组最新条目的查询咨询
完全可以通过单条查询语句实现该需求,不同数据库的实现方案如下:
支持窗口函数的数据库(PostgreSQL、MySQL 8.0+、SQL Server等)
使用ROW_NUMBER()窗口函数实现,逻辑为按date字段分组后,组内按importtime倒序排列,取每个组排名第一的条目即可:
WITH ranked_data AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY date ORDER BY importtime DESC) AS row_rank FROM 你的表名 ) SELECT importtime, date, supplier, domain, threshold FROM ranked_data WHERE row_rank = 1;
不支持窗口函数的低版本数据库(如MySQL 5.x)
可以用子查询关联的方式实现,先查出每个date对应的最大importtime,再关联原表匹配对应的完整条目:
SELECT t1.* FROM 你的表名 t1 INNER JOIN ( SELECT date, MAX(importtime) AS latest_importtime FROM 你的表名 GROUP BY date ) t2 ON t1.date = t2.date AND t1.importtime = t2.latest_importtime;
两种写法都可以直接得到你预期的输出结果,使用时把你的表名替换为实际的表名即可。
内容的提问来源于stack exchange,提问作者Youri
相关产品推荐
相关产品推荐

