有个取巧的办法.
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网页空间、营销软件、网站建设、船山网站维护、网站推广。
先创建一个临时表 ,假设源表是aaa
第一步:创建临时表
create table aaa_temp as select distinct * from aaa;
第二步,清空源表(清空zhiqian,最好确认一下aaa_temp表数据的正确性)
truncate table aaa;
第三步:把临时表中的数据复制回来
Insert into aaa select * from aaa_temp ;
第四步: 删除临时表
Drop table aaa_temp;
删除记录的命令格式:
DELETE FROM 表名
WHERE 条件
如果省略where,则删除所有记录,如果指定where,则删除指定满足条件的记录
你想删除后,只剩
aaa
的话好做
delete
from
table
where
字段名
in
(select
字段名
from
table
group
by
字段名
having
conunt(*)1)
你要是想剩
aaa
bbb
ccc
的话,比较麻烦
,你可以这样将数据查出来,
select
distinct
字段名
from
table
delete from table where +条件\x0d\x0a例如 \x0d\x0adelete from emp where empno=7369; --删除员工号为7369的员工记录 单条记录\x0d\x0adelete from emp where deptno=20; --删除部门号为20的的所有员工记录 多条记录
删除重复行有两种方法:
数据准备
建表语句
create table a(a varchar2(10),b varchar2(20));
插入数据
insert into a values('11','22');
insert into a values('11','22');
insert into a values('11','22');
insert into a values('aa','bb');
insert into a values('aa','bb');
insert into a values('cc','dd');
commit;
克隆一张表
create table test as (select * from a);
查询(1)select * from test
1 11 22
2 11 22
3 11 22
4 aa bb
5 aa bb
6 cc dd
(2)
select distinct * from test;
1 11 22
2 cc dd
3 aa bb
1)利用中间表法:create table test_copy as (select distinct * from test);
然后删除原表 drop table test;
create table test as (select * from test_copy);
然后就完成了。
2)利用rowid法
sql语句如下:
delete from test t where rowid not in(
select max(rowid) from test p where t.a=p.a and t.b=p.b);
commit;