【Oracle】安装配置数据库体系架构PL/SQL备份与恢复性能调优Oracle开发

您现在的位置:首页 > 网络学院 > 数据库 > Oracle > PL/SQL > “每个Y的最新X”的SQL经典问题

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

来源: 作者: 日期:2007-11-27

【聚杰网PL/SQL】“每个Y的最新X”的SQL经典问题

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

  生成实例表和数据:

--创建表CREATE TABLE dbo.Tab    (    ID int NOT NULL IDENTITY (1, 1),    Y varchar(20) NOT NULL,    X datetime NOT NULL    )GO--插入数据INSERT INTO Tab(Y, X) values('BBB', '2007-10-23 11:11:11')INSERT INTO Tab(Y, X) values('BBB', '2007-10-23 11:11:11')INSERT INTO Tab(Y, X) values('BBB', '2007-10-23 10:10:10')INSERT INTO Tab(Y, X) values('AAA', '2007-10-23 12:12:12')INSERT INTO Tab(Y, X) values('AAA', '2007-10-23 10:10:10')INSERT INTO Tab(Y, X) values('AAA', '2007-10-23 11:11:11')GO

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

--一条SQL语句实现  SELECT ID, Y, XFROM Tab TWHERE (NOT EXISTS          (SELECT 1         FROM Tab T2         WHERE (T2.Y = T.Y) AND (T2.X > T.X OR               T2.X = T.X AND T2.ID > T.ID)))

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

以下相关文章您是否也应该阅读一下 无相关信息
评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: