免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2615 | 回复: 12
打印 上一主题 下一主题

!!如何用一条SQL实现:如果几条记录一样,只保留一条 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-07 11:35 |只看该作者 |倒序浏览
!!如何用一条SQL实现:如果几条记录一样,只保留一条

论坛徽章:
0
2 [报告]
发表于 2004-07-07 11:44 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

select distinct * from tab

论坛徽章:
0
3 [报告]
发表于 2004-07-07 11:47 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

[quote]原帖由 "laixi"]select distinct * from tab[/quote 发表:

我的意思是只保留一个,其余的都删除

论坛徽章:
0
4 [报告]
发表于 2004-07-07 17:21 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

SQL>; create table a (
2 bm char(4), --编码
3 mc varchar2(20) --名称
4 )
5 /

表已建立.

SQL>; insert into a values('1111','1111');
SQL>; insert into a values('1112','1111');
SQL>; insert into a values('1113','1111');
SQL>; insert into a values('1114','1111');

SQL>; insert into a select * from a;

插入4个记录.

SQL>; commit;
SQL>; select rowid,bm,mc from a;

ROWID BM MC
------------------ ---- -------
000000D5.0000.0002 1111 1111
000000D5.0001.0002 1112 1111
000000D5.0002.0002 1113 1111
000000D5.0003.0002 1114 1111
000000D5.0004.0002 1111 1111
000000D5.0005.0002 1112 1111
000000D5.0006.0002 1113 1111
000000D5.0007.0002 1114 1111

查询到8记录.


查出重复记录
SQL>; select rowid,bm,mc from a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);

ROWID BM MC
------------------ ---- --------------------
000000D5.0000.0002 1111 1111
000000D5.0001.0002 1112 1111
000000D5.0002.0002 1113 1111
000000D5.0003.0002 1114 1111

删除重复记录
SQL>; delete from a a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);

删除4个记录.

SQL>; select rowid,bm,mc from a;

ROWID BM MC
------------------ ---- --------------------
000000D5.0004.0002 1111 1111
000000D5.0005.0002 1112 1111
000000D5.0006.0002 1113 1111
000000D5.0007.0002 1114 1111

论坛徽章:
0
5 [报告]
发表于 2004-07-08 10:51 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

楼上的就是答案了!delete from table1 a  where a.rowid!=(select max(rowid) from table1 b where a.column1=b.column1 and a.column2=b.column2)

论坛徽章:
0
6 [报告]
发表于 2004-07-08 11:11 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

想法和独特,高,实在是高 ,佩服

论坛徽章:
0
7 [报告]
发表于 2004-07-08 16:00 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

thanks all

论坛徽章:
0
8 [报告]
发表于 2004-07-08 16:19 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

这一招不灵, 如果这个表在复制的状态中呢?
我的错误信息是

ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows


救命!!

论坛徽章:
0
9 [报告]
发表于 2004-07-08 16:20 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

别告诉我要将复制状态先停下来啊.

论坛徽章:
0
10 [报告]
发表于 2004-07-08 17:44 |只看该作者

!!如何用一条SQL实现:如果几条记录一样,只保留一条

delete from tank t1 where exists (select t2.tank_no from tank t2  where t2.tank_no=t1.tank_no group by t2.tank_no
having count(*) >;1) and rowid not in (select min(rowid) from tank t3 where t3.tank_no=t1.tank_no)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP