易截截图软件、单文件、免安装、纯绿色、仅160KB

【转帖】SQL Oracle删除重复记录

1.Oracle删除重复记录.
删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录.
delete from people
where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)
删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
================================
此方法可以适用于sql ,oracle
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
/*
DECLARE @count INT
SELECT @count = COUNT(*) from [table1] WHERE [column1] = 1
DELETE TOP (@count-1) from [table1] WHERE [column1] = 1  这个top后面一定要有括号
*/
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
 =======================================
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
=======================================
 select identity(int,1,1) as id ,name,state into #tempTable from a
delete from a
delete from #tempTable
where id not in
(
 select min(id) from #tempTable group by name
)
insert into a( name,state)
select name,state from #tempTable
drop table #tempTable
本文来自CSDN博客,出处:http://b


相关文档:

sql 2005 存储过程分页 java 代码

 create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',         
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列 ......

sql—datediff 函数


 
DATEDIFF
   返回跨两个指定日期的日期和时间边界数。
   
   一、 语法 
   DATEDIFF ( datepart , startdate , enddate ) 
    
   二、参数
   datepar ......

SQL 2000 Insert返回自动编号id三种方法比较


SQL Server 2000中,insert数据的时候返回自动编号的id,有三种方法实现SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。
IDENT_CURRENT :返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任 ......

Microsoft SQL Server 查询处理器的内部机制与结构

摘要:本文介绍了在客户机上处理 Microsoft sql server(WINDOWS平台上强大的数据库平台) 查询的方式,各种客户机与 sql server(WINDOWS平台上强大的数据库平台) 的交互方式,以及 sql server(WINDOWS平台上强大的数据库平台) 在处理客户机程序的请求时需要完成的工作。
简介
  Microsoft(R) sql server(WINDOWS平台上强 ......

SQL中EXISTS的用法


比如在Northwind数据库中
有一个查询为
SELECT c.CustomerId, CompanyName
from Customers c
WHERE EXISTS(
SELECT OrderID from Orders o
WHERE o.CustomerID = cu.CustomerID)
这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号