SQLServer-按字段分组后取日期最新的一条
1.SQLServer-按字段分组后取日期最新的一条
sql 按字段分组后取日期最新的一条
第一种方式over(partition by)
select t.* from (
select a.*, row_number() over(partition by 需要分组的字段 order by 更新时间 desc) rw
from 表 a) t where t.rw = 1;
第二种方式MAX(日期)
select t1.* from 表 t1 inner join (
SELECT max(create_date) as create_date, 需要分组的字段mark
FROM 表 group by mark
) t2 on t1.create_date=t2.create_date and t1.mark=t2.mark
2.sqlserver分组排序并取出每组中的第⼀条数据
sqlserver分组排序并取出每组中的第⼀条数据使⽤SQL Server数据库在【分组排序并取出每组中的第⼀条数据】的场景下,很容易想到的是使⽤GROUP BY分组⼦句配合聚合函数。举个简单的例⼦,有⼀个YANGGBS表,表中有NAME和AGE两个字段,要求统计出每个NAME的最⼤AGE。
SELECT AA.*FROM YANGGBS AA
INNER JOIN (SELECT NAME, MAX(AGE) FROM YANGGBS GROUP BY NAME) BB
ON AA.NAME = BB.NAME
另外⼀种⽅法就是使⽤开窗函数(分析函数),分组排序之后通过每个组中的顺序号来进⾏记录筛选。
SELECT AA.*FROM YANGGBS AA INNER JOIN
(
SELECT NAME, ROW_NUMBER(PARTITION BY NAME ORDER BY AGE) AS RN FROM YANGGBS
) BB
ON AA.NAME = BB.NAME AND BB.RN = 1
更多的,这种⽅式在分页的实现上⽤途很⼤(通过RN进⾏顺序结果集筛选),⼏乎是数据库层⾯分页最好的解决⽅案。
“fool me once,shame on you. fool me twice, shame on me.”,翻译过来的意思是“愚弄我一次,是你坏;愚弄我两次,是我蠢”。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-05-21 C#委托
2020-05-21 阿里P7也不过如此,被一个简单的SQL查询难住!