如何用SQL删除这样的重复数据记录 不会很难吧! (100分)

  • 主题发起人 主题发起人 jun
  • 开始时间 开始时间
J

jun

Unregistered / Unconfirmed
GUEST, unregistred user!
表 user SQL server7)
name date
张三 02-3-13
李四 02-3-13
王五 02-3-13
张三 02-3-14
李四 02-3-14
王五 02-3-14
张三 02-3-13 //重复
李四 02-3-13 //重复
王五 02-3-13 //重复

DELETE user FROM user LEFT JOIN
(SELECT name, date FROM kqdata GROUP BY name, date)
AS T ON user.name = T .name
WHERE T .date IS NULL //??不会写这根本不行

要求把重复的数据删除! (不要说:先... 再建一个... 把原来的表删了)
 
不会吧,没人能回答![:(]
 
再建一个... 把原来的表删了嘿嘿我最先想到的就这个啊,看到你下面写了
只好再白说一句,
对 name 和date ,建立个唯一限制
这样连删除都不用了
 
我不说也没方说:
 
就这两个字段恐怕困难一点~
你用手动的把他删掉试试~
 
你先SELECT name, date FROM kqdata GROUP BY name, date 进一张临时表,
然后delete from kqdata,
然后再把临时表的东西selete过来不就完了.
也挺简单.
表怎么健的,连主键也没有,不好.
 
delete 语句好象不行,

首先找出重复的
select name,date
from tablename
group by name,date
having count(*)>1
在sql server 里删除
或 用table 过滤出来删除
 
create procedure delsamerecord (@name varchar;@dt:datetime)
as
begin
declare @newname varchar
declare @oldname varchar
declare @newdt datetime
declare @olddt datetime
declare row cursor for select @name,@dt from tablename for update
open row
fetch next from row into @newname,@newdt
set @oldname='',@olddt=getdate()
while (@@fetch_status=0)
begin
if @newname=@oldname and @newdt=@olddt
delete tablename where current of row
select @oldname=@newname
set @olddt=@newdt
fetch next from row into @newname,@newdt
end
close row
deallocate row
end
 
一条语句看来比较困难
你弄个中间表行不行啊
1、delete from 中间表
2、insert into 中间表 select distinct * from 原表
3、delete from 原表
4、insert into 原表 select distinct * from 中间表
 
不同的数据库也许需要 drop 原表了。关系数据库最忌讳重复记录,以后记住一定要建主键。
 
换一种说法,这样如何决解: 
表1 表2  
name   date       name date   
张三 02-3-13 张三 02-3-14
李四 02-3-13 李四 02-3-14
王五 02-3-13 王五 02-3-14
王五 02-3-14
张三 02-3-13 //重复
李四 02-3-13 //重复
-----------------------------------------------
把表1内与表2不重复的数据加入到表2 (好的方法 SQL)

 
这就好办了
insert into 表2
select * from 表1
where name not in (select name from 表2)
 
如果对于全部子段重复的,可以使用distinct关键字
select distinct name,date from Table1 (into table2)
如果只是选取名字,可能需要用子查询
select name,
(select top 1 date from Table1 as TB1 where TB1.name=name) as Date
From Table1
 
insert into 表2 select distinct * from 表1 where not exists (select * from 表2 where name=表1.name and date=表1.date)
 
多人接受答案了。
 
哥们,你自己怎么解决的?
说来听听! [:)]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
843
import
I
I
回复
0
查看
680
import
I
后退
顶部