Sql server 取按日期最大的一条记录

select * from T_Test A  where date=(select max(date) from T_Test B where A.[Name]=B.[Name])

原表记录



执行后结果

SQL Server 中查询最新的一条记录,通常涉及到使用 `ORDER BY` 和 `TOP` 子句来实现。以下是一些常见的方法: ### 使用 `ORDER BY` 和 `TOP` 子句 可以通过按时间字段(例如 `RegistrationDate`)降序排序,并结合 `TOP 1` 来获最新的记录。这种方法适用于需要基于时间戳或更新时间获最新数据的场景。 ```sql SELECT TOP 1 UserID, UserName, RegistrationDate FROM Users ORDER BY RegistrationDate DESC; ``` 此查询将返回表中注册日期最晚的一条记录[^3]。 ### 结合 `WHERE` 子句进行条件过滤 如果还需要根据特定条件筛选数据并获符合条件的最新记录,可以在查询中加入 `WHERE` 子句。例如,查询某个用户的最新记录: ```sql SELECT TOP 1 UserID, UserName, RegistrationDate FROM Users WHERE UserID = 123 ORDER BY RegistrationDate DESC; ``` ### 查询每组中的最新一条记录 如果需求是查询每组数据中的最新一条记录(例如,每个用户有多条操作日志,需获每个用户的最新操作记录),可以使用子查询和 `ROW_NUMBER()` 窗口函数来实现: ```sql WITH RankedData AS ( SELECT UserID, UserName, RegistrationDate, ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY RegistrationDate DESC) AS RowNum FROM Users ) SELECT UserID, UserName, RegistrationDate FROM RankedData WHERE RowNum = 1; ``` 该查询通过为每组数据分配行号,并选择每组中行号为 1 的记录,从而获每组的最新记录[^4]。 ### 使用存储过程封装查询逻辑 为了复用查询逻辑,可以将其封装到存储过程中。例如,创建一个存储过程来查询指定用户的最新记录: ```sql CREATE PROCEDURE GetLatestUserRecord @UserID INT AS BEGIN SELECT TOP 1 UserID, UserName, RegistrationDate FROM Users WHERE UserID = @UserID ORDER BY RegistrationDate DESC; END; ``` 调用时只需传入用户 ID: ```sql EXEC GetLatestUserRecord @UserID = 123; ``` ### 随机查询一条记录 如果需求是随机查询表中的一条记录,可以使用 `NEWID()` 或 `TABLESAMPLE` 方法: ```sql -- 使用 NEWID() 随机排序并一条 SELECT TOP 1 * FROM Users ORDER BY NEWID(); ``` 此方法适用于需要随机抽数据的场景[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值