网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.利用SQL Server复制技术实现数据.
.从三个方面进行讲解如何适当优化.
.Link Server的语法.
.一些有用的sql语句实例.
.Transact-SQL不使用游标的两个循.
.MSSQL跨服务器连接的几种方法.
.创建一个表时表中列的顺序对性能.
.快速解决SQL server 2005孤立用户.
.SQL server 危险存储过程删除与恢.
.数据库设计中经常用到的计算表宽.
.mssqlserver2000“设备激活错误”.
.利用sql2005的新特性实现根据子表.
.从基础知识入手详细讲解数据库的.
.讲解数据库管理员(DBA)与开发人员.
.SQL SERVER的数据类型 && SQLSer.
.使用日志转移代替集群来提供较高.
.SQL Server里面的时间变更周期.
.全面解析数据挖掘的分类及各种分.
.关于MSSQL Server中DATETIME类型.
.如何转移SQL SERVER数据库.

深入讲解如何删除仅为第一列相同的记录

发表日期:2008-3-21


问题:关系数据库中手工输入表InputData中有如下记录:

TagName TimeStamp Value 
MM0008 2007-08-12 0:00:00 1000 
MM0008 2007-08-13 0:00:00 1001 
MM0008 2007-08-14 0:00:00 1002 
MM0008 2007-08-15 0:00:00 1003 
MM0008 2007-08-16 0:00:00 1004 
MM0008 2007-08-17 0:00:00 1005 
MM0008 2007-09-07 9:50:22 4444 
MM0008 2007-09-07 15:10:56 100 
MM0008 2007-09-07 15:11:56 200 
MM0008 2007-09-11 15:53:13 500 
MM0008 2007-09-11 15:54:51 500 
MM0008 2007-09-11 15:55:03 123 
MM0008 2007-09-11 15:58:08 500 
MM0008 2007-09-11 16:01:58 0 
MM0009 2007-09-11 15:58:08 501 
MM0009 2007-09-11 16:01:58 0 
MM0010 2007-09-11 15:58:08 502 
MM0010 2007-09-11 16:01:58 0 
MM0011 2007-09-11 15:58:08 503 
MM0011 2007-09-11 16:01:58 0 
MM0018 2007-09-11 15:58:08 504 
MM0018 2007-09-11 16:01:58 0 
MM0019 2007-09-11 15:58:08 505 
MM0019 2007-09-11 16:01:58 0 
MM0020 2007-09-11 15:58:08 506 
MM0020 2007-09-11 16:01:58 0 
MM0021 2007-09-11 15:58:08 507 
MM0021 2007-09-11 16:01:58 0 
MM0022 2007-09-11 15:58:08 508 
MM0022 2007-09-11 16:01:58 0 
MM0023 2007-09-11 15:58:08 509 
MM0023 2007-09-11 16:01:58 0 
MM0024 2007-09-11 15:58:08 510 
MM0024 2007-09-11 16:01:58 0 
MM0025 2007-09-11 15:58:08 511 
MM0025 2007-09-11 16:01:58 0

如何获得每个TagName离当前时间最近的一条记录,把它的值及其时间插入到实时数据库中?最后得到的记录集如下所示:

TagName TimeStamp Value 


MM0008 2007-09-11 16:01:58 0
MM0009 2007-09-11 16:01:58 0
MM0010 2007-09-11 16:01:58 0
MM0011 2007-09-11 16:01:58 0
MM0018 2007-09-11 16:01:58 0
MM0019 2007-09-11 16:01:58 0
MM0020 2007-09-11 16:01:58 0
MM0021 2007-09-11 16:01:58 0
MM0022 2007-09-11 16:01:58 0
MM0023 2007-09-11 16:01:58 0
MM0024 2007-09-11 16:01:58 0
MM0025 2007-09-11 16:01:58 0

解决方法:

1. 使用distinct:可以删除完全相同的记录,但是我现在只需要删除TagName列相同的记录,不是很好实现。

2. 使用group by

SELECT     Tagname, TimeStamp, Value
FROM         InputData
WHERE     (TimeStamp IN
(SELECT     MAX(TimeStamp) AS TimeStamp
FROM          InputData  
GROUP BY Tagname))
上一篇:详细讲解提高数据库查询效率的实用方法 人气:1117
下一篇:如何为SQL Server表数据生成insert脚本 人气:1284
浏览全部数据库的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐