“每个Y的最新X”是一个经典的SQL问题,工作中经常碰到。当然不是“按Y分组求最新的X值”那么简单,要求最新X的那条记录或主键ID。用一条SQL语句可以简单的解决此问题。

生成实例表和数据:
一条语句简单解决“每个Y的最新X”的SQL经典问题--创建表
一条语句简单解决“每个Y的最新X”的SQL经典问题
CREATE TABLE dbo.Tab
一条语句简单解决“每个Y的最新X”的SQL经典问题    (
一条语句简单解决“每个Y的最新X”的SQL经典问题    ID 
int NOT NULL IDENTITY (11),
一条语句简单解决“每个Y的最新X”的SQL经典问题    Y 
varchar(20NOT NULL,
一条语句简单解决“每个Y的最新X”的SQL经典问题    X 
datetime NOT NULL
一条语句简单解决“每个Y的最新X”的SQL经典问题    )
一条语句简单解决“每个Y的最新X”的SQL经典问题
GO
一条语句简单解决“每个Y的最新X”的SQL经典问题
--插入数据
一条语句简单解决“每个Y的最新X”的SQL经典问题
INSERT INTO Tab(Y, X) values('BBB''2007-10-23 11:11:11')
一条语句简单解决“每个Y的最新X”的SQL经典问题
INSERT INTO Tab(Y, X) values('BBB''2007-10-23 11:11:11')
一条语句简单解决“每个Y的最新X”的SQL经典问题
INSERT INTO Tab(Y, X) values('BBB''2007-10-23 10:10:10')
一条语句简单解决“每个Y的最新X”的SQL经典问题
INSERT INTO Tab(Y, X) values('AAA''2007-10-23 12:12:12')
一条语句简单解决“每个Y的最新X”的SQL经典问题
INSERT INTO Tab(Y, X) values('AAA''2007-10-23 10:10:10')
一条语句简单解决“每个Y的最新X”的SQL经典问题
INSERT INTO Tab(Y, X) values('AAA''2007-10-23 11:11:11')
一条语句简单解决“每个Y的最新X”的SQL经典问题
GO

解决“每个Y的最新X”经典SQL问题

一条语句简单解决“每个Y的最新X”的SQL经典问题--一条SQL语句实现
  SELECT ID, Y, X
一条语句简单解决“每个Y的最新X”的SQL经典问题
FROM Tab T
一条语句简单解决“每个Y的最新X”的SQL经典问题
WHERE (NOT EXISTS
一条语句简单解决“每个Y的最新X”的SQL经典问题          (
SELECT 1
一条语句简单解决“每个Y的最新X”的SQL经典问题         
FROM Tab T2
一条语句简单解决“每个Y的最新X”的SQL经典问题         
WHERE (T2.Y = T.Y) AND (T2.X > T.X OR
一条语句简单解决“每个Y的最新X”的SQL经典问题               T2.X 
= T.X AND T2.ID > T.ID)))

在Y列在建立索引,可以大大优化查询速度。

相关文章:

  • 2022-12-23
  • 2021-11-02
  • 2021-12-18
  • 2022-02-13
  • 2021-11-21
  • 2021-12-21
  • 2022-01-13
猜你喜欢
  • 2021-09-02
  • 2021-06-13
  • 2022-12-23
  • 2022-02-02
  • 2021-09-14
  • 2021-09-30
相关资源
相似解决方案