sql 删除重复记录语句收藏

sql 删除重复记录语句收藏
删除重复记录的题目。现给出解决此题的答案,如下:

select distinct * into Temp from Student
truncate table Student
insert Student select * from Temp
drop table Temp
--至此删除了重复的数据。
--显示删除后的结果
select * from student
思路是先查询出没有重复的数据保存到一个临时的表Temp里面,然后再用truncate关键字删除目标表的数据内容,最后使用drop命令删除Temp表即可。

--------------------------------------------------------------------------------

斐波那契数列非递归的C#代码解法如下:用数学里面的通项

static Int64 Fib(Int64 n)
{
     int first, second, third;
     first = second = third = 1;
     if (n==1||n==2)
     {
          return 1;
     }
     for (int i = 3; i <= n; i++)
     {
         first = second + third;
         third = second;
         second = first;
     }
     return first;
}
Fibonacci(斐波那契)序列:
Fib(n) = Fib(n - 1) + Fib(n - 2), n>1, Fib(1) = Fib(2) = 1
即:序列的第一和第二项是1,从第三项开始,后一项是前两项的和。
序列的前8项是:
1, 1, 2, 3, 5, 8, 13, 21

更多更好方法

若想将姓名、身份证号、住址这三个字段完全相同的记录查询出来
select   p1.*   from   persons   p1,persons   p2   where   p1.id<>p2.id   and   p1.cardid   =   p2.cardid   and   p1.pname   =   p2.pname   and   p1.address   =   p2.address

可以实现上述效果.

几个删除重复记录的SQL语句
 
1.用rowid方法

2.用group by方法

3.用distinct方法

1。用rowid方法

据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:

查数据:

     select * from table1 a where rowid !=(select   max(rowid) 
     from table1 b where a.name1=b.name1 and a.name2=b.name2......)

删数据:

    delete   from table1 a where rowid !=(select   max(rowid) 
     from table1 b where a.name1=b.name1 and a.name2=b.name2......)

2.group by方法

查数据:

  select count(num), max(name) from student --列出重复的记录数,并列出他的name属性
  group by num
  having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次

删数据:

  delete from student
  group by num
  having count(num) >1
  这样的话就把所有重复的都删除了。

3.用distinct方法 -对于小的表比较有用

 

create table table_new as   select distinct *   from table1 minux
truncate table table1;
insert into table1 select * from table_new;

查询及删除重复记录的方法大全

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(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)

3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有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)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * 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)

 

时间: 2024-11-05 12:19:36

sql 删除重复记录语句收藏的相关文章

sql 删除重复记录语句

1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...) 2),select distinct * into temp from tablename   delete from tablename   insert into tablename select * from temp 评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作 3),例如:

多种删除重复记录语句

多种删除重复记录语句 1. 删除全部重复记录(慎用) delete 表 where 重复字段 in (select 重复字段 from 表 group by 重复字段 having count(*)>1) 2. 保留一条(这个应该是你所需要的) delete hzt where id not in (select max(id) from hzt group by title) 注:此处保留id最大一条记录 select distinct * into #temp from 表 truncate

mysql删除重复记录语句的方法_Mysql

例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name value 1 a pp 3 b iii 4 b pp 6 c pp 8 c iii 方法1 delete YourTable where [id] not in ( select max([id]) from YourTable group by (name + value)) 方法2 delet

sql 删除重复记录

下面我们就来看看如何删除重复记录如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间--    开发人员的噩梦--删除重复记录  想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确.解决该问题的办法就是将这些重复的记录删除,只保留其中的一条.   在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记

sql过滤重复记录语句并取得不重复的数据

sql UNION过滤重复记录语句并取得不重复的数据 $sql ="UNION ALL->UNION -------------------- --以下句子如何取得不重复的数据? SELECT DISTINCT TOP 100 PERCENT kirinLDS.dbo.tbl人员调整.部门名 AS 部门名 FROM kirinLDS.dbo.tbl人员 INNER JOIN   kirinLDS.dbo.tbl定单 ON kirinLDS.dbo.tbl人员.工号 = kirinLDS.d

sql 删除重复记录实现方法

  1.对于第一种重复,比较容易解决,使用  代码如下 复制代码 select distinct * from tablename 就可以得到无重复记录的结果集. 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除  代码如下 复制代码 select distinct * into #tmp from tablename drop table tablename select * into tablename from #tmp drop table #tmp 发生这种重复的原因

sql 删除重复记录没有大小关系时,处理重复值

--> --> (roy)生成 if not object_id('tempdb..#t') is null     drop table #t go create table #t([num] int,[name] nvarchar(1)) insert #t select 1,n'a' union all select 1,n'a' union all select 1,n'a' union all select 2,n'b' union all select 2,n'b' go 方法1:

MySQL 数据库中删除重复记录方法总结

MYSQL数据库中,经常会遇到重复记录的情况,那么就需要SQL删除重复记录,下面为您列举了四种删除重复记录的方式,用于不同的情况,希望对您有所帮助. 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断  代码如下 复制代码 select * from people  where peopleId in (select   peopleId from   people group by   peopleId having count(peopleId) > 1)    

有用的SQL语句(删除重复记录,收缩日志)

删除重复记录,将TABLE_NAME中的不重复记录保存到#TABLE_NAME中 select distinct * into #table_name from table_name delete from table_name select * into table_name from #table_name drop table #table_name 与此相关的是"select into"选项,可以在数据库属性 对话框中,勾起来此项,或者在Query Analyzer中执行 ex