| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5303 人关注过本帖
标题:删除重复记录并保留其中记录号最大的一条,用 sql 语如何写
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1540
专家分:180
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:20 
删除重复记录并保留其中记录号最大的一条,用 sql 语如何写
一表中有N条重复记录,现要删除并保留记录号最大的一条,SQL删除语句如何写?

[ 本帖最后由 sylknb 于 2014-4-29 12:14 编辑 ]
搜索更多相关主题的帖子: 最大的 记录 如何 
2014-04-29 11:52
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
sele * dist from 表
2014-04-29 11:54
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1540
专家分:180
注 册:2006-6-3
收藏
得分:0 
用delect 如何写?
2014-04-29 12:13
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
干嘛用delect ?
2014-04-29 12:19
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1540
专家分:180
注 册:2006-6-3
收藏
得分:0 
网上摘录

---保留大或小其中一个记录
delete from FLRK1 where 考号 in
(select min(考号) from FLRK1 group by 考号 having count(考号)>1)
但执行上面的语句删除了所有记录,并不是其中的一条记录,为何?如何保留大的或小的一个记录?
2014-04-29 14:39
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
收藏
得分:0 
我也不会删除重复记录,不过可以采用
sele 字段1,字段2,字段3 from 表 group by 字段1,字段2,字段3 into table e:\新表.dbf
dele from 表
两条语句
2014-04-29 14:49
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:5 
程序代码:
*--- 保留字段A中最大值的那一行

CREATE CURSOR T (A I,B C(2),C C(3))
INSERT INTO T VALUES (1,[AA],[BB1])
INSERT INTO T VALUES (2,[AA],[BB2])
INSERT INTO T VALUES (3,[CC],[BB3])
INSERT INTO T VALUES (4,[AA],[BB4])
INSERT INTO T VALUES (5,[CC],[BB5])

DELETE T FROM (SELECT * FROM T WHERE ;
B IN (SELECT B FROM T GROUP BY B HAVING COUNT(B)>1) ;
AND A NOT IN (SELECT MAX(A) FROM T GROUP BY B HAVING COUNT(B)>1)) A WHERE T.A=A.A
MESSAGEBOX(_TALLY)
SELECT T
BROWSE

坚守VFP最后的阵地
2014-04-29 15:06
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
以下是引用sylknb在2014-4-29 11:52:32的发言:

一表中有N条重复记录,现要删除并保留记录号最大的一条,SQL删除语句如何写?
不知道楼主用纯VFP命令是否能解决这个问题

坚守VFP最后的阵地
2014-04-29 16:49
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册:2014-2-7
收藏
得分:15 
假设表 table1 有一字段 empid C(10),现在要删除字段 empid 中重复的记录,仅保留记录号最大的一个,纯 VFP 代码如下:

select 0
use table1
index on empid+str(recn()) tag empid desc
go top
do while not eof()
    m.cTmp = empid
    skip
    if empid = m.cTmp
        delete rest while empid = m.cTmp
    endif
enddo

泉城飞狐
2014-04-29 21:14
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1540
专家分:180
注 册:2006-6-3
收藏
得分:0 
DELETE T FROM (SELECT * FROM T WHERE ;
B IN (SELECT B FROM T GROUP BY B HAVING COUNT(B)>1) ;
AND A NOT IN (SELECT MAX(A) FROM T GROUP BY B HAVING COUNT(B)>1)) A WHERE T.A=A.A
MESSAGEBOX(_TALLY)
请班主介释一下代码的原理,谢谢!
2014-04-29 22:38
快速回复:删除重复记录并保留其中记录号最大的一条,用 sql 语如何写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018456 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved