有时,我们的数据表中会存在一些冗余数据,这就要求我们查询并操作这些冗余数据. 一.查询表中重复记录 例如,查找重复记录是根据单个字段(peopleId)来判断 SELECT * FROM Tpeople ) 二.删除表中多余的重复记录 例如,重复记录是根据单个字段(peopleId)来判断,只保留最先增加的记录,下面是保留ID最小的记录 DELETE FROM Tpeople ) ) 三.查找表中多余的重复记录(多个字段) A,DB2中可以如下查询 SELECT * FROM vitae TA
大致分为两种情况:ID连续和ID不连续. 1.ID连续的情况: 2.ID不连续的情况: (1).两次对表查询,效率较低. ID from A) (2).外层查询没有对表A进行查询,效率提高. ID from A order by ID) as a order by a.ID desc (3).ROW_NUMBER()函数效率更高,SQL2005以上版本可用. 以上是自己做的笔记,学习过程中,好记性不如烂笔头,自己也记录下来,作为成长的一部分.
/*第一种实现方法,效率低并且有错误*/ DECLARE @DD DATETIME SET @DD = GETDATE() SELECT a.GoodsID , a.Account , a.LastUpdate FROM dbo.tb_App_Goods a LEFT JOIN dbo.tb_App_Goods b ON a.Account = b.Account AND a.LastUpdate > b.LastUpdate GROUP BY a.GoodsID , a.Account , a
1.查询单列重复: select * from test where name in (select name from test group by name having count (name) > 1) 2.查询多列重复: SELECT a.* FROM test a,( SELECT name,code FROM test GROUP BY name,code HAVING COUNT(1)>1 ) AS b WHERE a.name=b.name AND a.code=b.code
刚有个项目,需要查询水位数据表中的水位信息,及查询降雨量表中统计时段降雨量的数据,以计算出日降雨量,而且时段是前一天8时到后一天8时总共24个小时. 两个子查询: 1.根据当前时间判断统计前天8时到今天8时还是大前天8时到前天8时的时段雨量: select STCD,SUM(DRP) as drp2 from Jialiang.dbo.ST_PPTN_R where STCD'and TM>case ), , )), , )+' 8:00' end and TM<case ), )), , )
使用sql语句查询日期在一周内的数据 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年的数据 select * from ShopOrder where datediff(day,ordTime,getdate()-1)=0 //查询当天的所有数据 SELECT * FROM A where datediff(d,datetime,getdate()) <=30 //前30天 S