设为首页 | 收藏本站 | 关于我们 | 广告服务
 
 
当前位置:首页 > 科技资讯 > 专家视点
专家视点
轻松解决“每个Y的最新X”的SQL问题
来源:  作者:  日期:2007/12/5

在实际的工作和学习中,“每个Y的最新X”是大家经常遇到的问题。请注意这不是“按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, X

FROM Tab T

WHERE (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列建立索引,可以很大的优化查询速度。

 
 
企业简介 | 版权声明 | 免责声明 | 频道介绍 | 安全提示 | 法律顾问 | 网上投稿 | 客服电话 | RSS订阅
Copyright © 2005 Fcc.Com.Cn, All Rights Reserved. ,《中国金融电脑》杂志社版权所有
电话:010-51915111-805 传真:010-51915236,网络出版服务许可证(署)网出证(京)字第337号
京ICP备14024077号-1 京公安网备:11010802025321 技术支持:站多多