SQL删除某些字段重复的记录(只保留一条)
2008年06月19日 星期四 10:13

使用SQL句子删除重复记录的方法

    会员数据需要用到的是下面三个字段:ID(自增),MemberName,MemberAddress.只要会员姓名与会员地址相同就认为是重复记录,重复记录在删除时只保留ID最大的那个.SQL如下:   

delete MemberInfo where ID not in (
  
select max(ID) from MemberInfo group by MemberName, MemberAddress)
    not in的效率可能会低些,但因为是直接操作数据库,所以这并不重要.这个句子还是非常的简单有效的.
   
    在真正的删除操作前,通常会先了解一下重复记录的情况.可以使用下面的句子:
   
SELECT COUNT(MemberName) AS TheCount, MemberName, MemberAddress
FROM MemberInfo
GROUP BY MemberName, MemberAddress
HAVING (COUNT(*) > 1)



一道SQL查询题

学生成绩表Student,字段id(记录ID),name(姓名),subject(科目名称),score(分数),createddate(创建日期)
请写出以下查询的SQL命令:
a,3天前0点以前创建的记录
b,20分钟前创建的记录
c,查询有3门功课不及格的学生
d,将及格的学生成绩更新为1,不及格的学生成绩更新为0
e,删除重复姓名的记录,如
id name
1 A
2 B
3 A
4 A
删除后只剩下A和B两条记录

(a)select * from dbo.[Student] where [createddate] < DATEADD(dd, DATEDIFF(dd,0,getdate()), -3)
(b)select * from dbo.[Student] where [createddate] < dateadd(mi , -20 , getdate())
(c)select [name] from dbo.[Student] where [score] < 60 group by [name] having count([name]) >= 3
(d)update dbo.[Student] set [score] = (case when [score] > 60 then 1 else 0 end)
(e)delete from dbo.[Student] where [id] not in (select min(id) from dbo.[Student] group by [name])
posted on 2008-06-25 15:39  Dacia  阅读(204)  评论(0编辑  收藏  举报