求一个消除数据重复的SQL语句(最好给出在ACCESS和SQL两种语句,谢谢),见帖内。测试正确马上结帖给分!!!!
譬如我有一个单词表
里面有很多单词
id (自动编号)
word (单词) 但是允许重复
mean1 第一个意思
mean2 第二个意思
thedate 入库时间
我现在发现数据很多单词是重复的,
那么就想删除这些重复的单词,但是要保留入库时间最迟的那个单词!!
这个问题,如果删除某个单词的重复记录倒是不麻烦,关键现在可能有很多重复的记录,能不能一下子通过个SQL语句来实现删除呢??~
能帮帮忙吗?谢谢
问题点数:30、回复次数:22Top
1 楼skyinfo(tiger)回复于 2004-12-02 09:00:01 得分 10
delete from Table1 where id not in (select min(id) from Table1 group by [word])Top
2 楼YaoMing_csdn(姚明)回复于 2004-12-02 09:09:06 得分 5
id (自动编号)是自動編號的,那麽入库时间越晚,id應該越大!
所以應該用MAX
delete from Table1 where id not in (select max(id) from Table1 group by [word])
Top
3 楼skyinfo(tiger)回复于 2004-12-02 09:12:59 得分 0
正確Top
4 楼Gutta(冯大狂)回复于 2004-12-02 13:26:33 得分 0
正确什么正确啊??~
你这样只是删除了一个单词的重复单词吧??
我要删除的是在整个数据库中所有重复的记录都变成唯一的一个存在于数据库中。Top
5 楼YaoMing_csdn(姚明)回复于 2004-12-02 20:45:13 得分 5
你狂什么狂??~
像你这种态度都不高兴理你!无知!!Top
6 楼vinsonshen(为了明天)回复于 2004-12-02 21:56:26 得分 5
楼主,你这样就不对啦~~别人帮你解答还你这样的态度~~~这样就算别人会,别人都懒得理你了Top
7 楼guanshiyu123(就欺负你..宝)回复于 2004-12-02 23:10:50 得分 0
楼上几位的意思很对啊Top
8 楼mastersky(浪)回复于 2004-12-03 00:32:27 得分 5
楼主确实无知。
YaoMing_csdn(姚明) ( ) 的答案是对的:
create table BBB(
[ID] [int] IDENTITY (1, 1) NOT NULL ,
WORD varchar(30),
Datea datetime
)
insert into BBB ([WORD],datea)
select 'abc','2004-12-12'
union
select 'abc','2004-12-13'
union
select 'abc','2004-12-14'
union
select 'abc','2004-12-15'
union
select 'abd','2004-12-16'
union
select 'abd','2004-12-17'
union
select 'abe','2004-12-18'
union
select 'abc','2004-12-19'
union
select 'abc','2004-12-20'
union
select 'ab','2004-12-21'
union
select 'abc','2004-12-22'
select * from bbb order by word
delete from BBB where id not in (select max(id) from BBB group by [word])
select * from bbb order by word
结果:
删除前:
ID WORD Datea
----------- ------------------------------ ------------------------------------------------------
12 ab 2004-12-21 00:00:00.000
13 abc 2004-12-12 00:00:00.000
14 abc 2004-12-13 00:00:00.000
15 abc 2004-12-14 00:00:00.000
16 abc 2004-12-15 00:00:00.000
17 abc 2004-12-19 00:00:00.000
18 abc 2004-12-20 00:00:00.000
19 abc 2004-12-22 00:00:00.000
20 abd 2004-12-16 00:00:00.000
21 abd 2004-12-17 00:00:00.000
22 abe 2004-12-18 00:00:00.000
删除后:
ID WORD Datea
----------- ------------------------------ ------------------------------------------------------
12 ab 2004-12-21 00:00:00.000
19 abc 2004-12-22 00:00:00.000
21 abd 2004-12-17 00:00:00.000
22 abe 2004-12-18 00:00:00.000
Top
9 楼nickycheng(枪枪成)回复于 2004-12-03 09:08:53 得分 0
楼主不适合搞技术,一不谦虚,二不实验Top
10 楼wangjia184(我就是传说中的。。。。。。SB)回复于 2004-12-03 17:03:41 得分 0
做人要低调Top
11 楼skyinfo(tiger)回复于 2004-12-03 20:21:44 得分 0
樓主先學如何做人、再學如何做事.
連人都不會做,還做什麼事
不要再過幾年變成了:冯狂犬Top
12 楼passionke(每一步都改变未来,却只能有一种结局!)回复于 2004-12-03 20:50:13 得分 0
*^_^*!Top
13 楼huangweizhao(小菜鸟)回复于 2004-12-04 00:20:15 得分 0
:(
:)
Top
14 楼S.F.(chinasf.cnblogs.com)回复于 2004-12-04 04:16:11 得分 0
uppTop
15 楼lonever()回复于 2004-12-04 10:31:33 得分 0
恩,是的Top
16 楼Yang_(扬帆破浪)回复于 2004-12-08 10:16:19 得分 0
既然是指明入库时间最大的,应该用入库时间判断,而不应该只用id
delete a
from Table1 a
where id not in (select top 1 id from Table1 where [word]=a.[word] order by thedate desc,id desc)
Top
17 楼wxq1142(游虾)回复于 2004-12-08 11:36:48 得分 0
楼上正解
楼主要对人尊敬Top
18 楼jilate()回复于 2004-12-08 13:09:18 得分 0
1、针对技术
用入库时间和id,我想效果应该是一样的,因为自动增长的字段是系统自动分配的。
上面的方法应该都可行
2、搂主谦虚点,虽然你的昵称为大狂,但也要谦虚,等你真正能狂的时候再狂。
另外还是道个歉吧。Top
19 楼xiantongsky(拼搏的小兔)回复于 2004-12-09 16:09:20 得分 0
自已摸索不也来,别人给你答案了,你还这么的狂,
就算是别人知道了,见到你这种态度也不会告诉你的,
兄弟,以后要谦虚一点,这样才能学到知识!!!Top
20 楼didoleo(冷月无声)回复于 2004-12-09 16:21:21 得分 0
乖乖!Top
21 楼Gutta(冯大狂)回复于 2005-01-04 15:10:49 得分 0
怎么搞的,我态度不好了吗?
晕~~
Top
22 楼Gutta(冯大狂)回复于 2005-01-27 08:49:46 得分 0
好了,好了,给分就是了~Top




