oracle数据库中如何用sql语句查出重复字段以及如何删除?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库中如何用sql语句查出重复字段以及如何删除?相关的知识,希望对你有一定的参考价值。
比如我有一个表名字叫student
表有一个字段name
name字段有100万条数据 其中有很多重复数据 我如何用sql语句查出重复数据以及如何用sql语句删除重复了的数据(假设有n个name都一样 我只保留一个)
查询可用group by语句,删除则用delete语句。
1、创建测试表,插入测试数据:
create table test(id int,
name varchar2(20));
insert into test values (1,\'张三\');
insert into test values (1,\'张三\');
insert into test values (2,\'李四\');
insert into test values (2,\'李四\');
insert into test values (3,\'王五\');
insert into test values (3,\'王五\');
insert into test values (3,\'王五\');
insert into test values (4,\'赵六\');
commit;
2、查询重复数据,用语句:
结果:
3、删除重复记录用语句:
commit; 参考技术A 查询重复数据
select name,count(*) repeatNum from student group by name having repeatNum > 1
删除重复数据
DELETE tb_affiche WHERE name IN (SELECT name FROM tb_affiche GROUP BY name HAVING COUNT(*) > 1)
AND name not in(SELECT distinct name FROM tb_affiche GROUP BY name HAVING COUNT(*) > 1)
希望能够帮助到你. 参考技术B 假设有一个主键(唯一键)id
delete from student a
where exists(
select 1 from
(
select min(id) minid,name
from student
group by name
) b where a.id = b.minid and a.name <> b.name
)本回答被提问者和网友采纳 参考技术C delete from student where rowID not in(select Max(rowID) from student group by sname)
如何用SQL语句求oracle 数据库所有表的行数?
求各个表的行数, 返回的结果应该是两列, 表名和行数 多谢指教! 是一下子查出所有表的行数, 而不是一个表一个表的用SQL语句查询. select count(*) from tablename 这个语句一次只能查一个表. 是oracle里面的拉~~~
参考技术A 可以从表user_tables中查询。select
sum(num_rows)
from
user_tables
;
就是显示用户所有表的行数其中num_rows是每个表的行数,用sum加总一下,就是当前用户所有表的
总行
数。
但因为user_tables中的数据不是
实时
统计,会有时间差,所以以上Sql统计得到的结果与实际会存在一定
误差
。
以上是关于oracle数据库中如何用sql语句查出重复字段以及如何删除?的主要内容,如果未能解决你的问题,请参考以下文章
微软的sql2005中如何用SQL语句查询出将一个表的字段的说明
在PL/SQL中如何用SQL语句查询数据库中所有表的数据数量?
Oracle中如何用一条insert into 语句插入多条数据 如: insert into 表 values(多条数据)????????