每个Y的最新X是一个经典的SQL问题工作中经常碰到当然不是按Y分组求最新的X值那么简单要求最新X的那条记录或主键ID用一条SQL语句可以简单的解决此问题
生成实例表和数据
创建表CREATE TABLE dboTab ( ID int NOT NULL IDENTITY ( ) Y varchar() NOT NULL X datetime NOT NULL )GO插入数据INSERT INTO Tab(Y X) values(BBB ::)INSERT INTO Tab(Y X) values(BBB ::)INSERT INTO Tab(Y X) values(BBB ::)INSERT INTO Tab(Y X) values(AAA ::)INSERT INTO Tab(Y X) values(AAA ::)INSERT INTO Tab(Y X) values(AAA ::)GO
解决每个Y的最新X经典SQL问题
一条SQL语句实现 SELECT ID Y XFROM Tab TWHERE (NOT EXISTS (SELECT FROM Tab T WHERE (TY = TY) AND (TX > TX OR TX = TX AND TID > TID)))
在Y列在建立索引可以大大优化查询速度