"每个Y的最新X"算法,not exists妙用
2011-10-15 14:37
381 查看
“每个Y的最新X”是一个经典的SQL问题,工作中经常碰到。当然不是“按Y分组求最新的X值”那么简单,要求最新X的那条记录或主键ID.用一条SQL语句可以简单的解决此问题。
生成实例表和数据:
解决“每个Y的最新X”经典SQL问题:
在Y列在建立索引,可以大大优化查询速度。
生成实例表和数据:
--创建表 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 |
--一条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))) |
相关文章推荐
- android 导出每个号码的最新的短信记录(巧用SQL语句的"--"注释符)
- "通常每个套接字地址(协议/网络地址/端口)只允许使用一次"
- 不要在DEBUG模式下使用STL实现"复杂的"算法
- 最新发明:虚拟和现实搭桥的"第六感"
- 越狱 iphone通知中心里的"精品推荐"的删除方法(2014最新原创出炉)
- "空格在每个浏览器中显示的距离都不一样"的解决办法
- hiho一下 第三周 "KMP"算法
- 一个错误"索引期间字段权重如果每个文档都设置的话,是值得的"
- 将清单中的"元件值\t元件位号"分裂为"元件位号\t元件值",每个元件一行
- 用Matlab实现MDSC中的"Fourier Deconvolution"的算法
- "bottom line" 和 "底线”可以互译吗?
- "年薪1美元"苹果CEO乔布斯
- 测试人员与开发人员沟通的"五要与四不要"
- 使用<input type="file">实现文件上传
- "Debug Assertion Failed", File:afxcmn.inl
- "无法安装64位版本的Office,因为在您的PC上找到了以下32位程序"的解决办法
- 华为机试题---判断一个字符串中的"( )"是否配对
- "买房不贷款 有贷提前还" 降息时代的"傻"做法
- "_OBJC_CLASS_$ [文件名1]referenced from in[文件名2]:ld: symbol(s) not found问题解决办法
- jquery报错: "object expected"