搭建论坛《搭建之星》论坛数据库交流 → 删除数据库中重复记录的SQL语句


  共有2297人关注过本帖树形打印

主题:删除数据库中重复记录的SQL语句

美女呀,离线,留言给我吧!
dbs
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:助工 帖子:230 积分:1931 威望:0 精华:0 注册:2006-5-15 11:16:55
删除数据库中重复记录的SQL语句  发帖心情 Post By:2010-4-14 8:38:16

    在几万条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?可以按照下面的例子进行操作:
    表School(或SchoolPro)字段SchoolId,SchoolName。
    1、查找表中多余的重复记录,重复记录是根据单个字段(SchoolId)来判断
    select * from School
    where SchoolId in (select  SchoolId  from  School  group  by  SchoolId  having  count(SchoolId) > 1)
    2、删除表中多余的重复记录,重复记录是根据单个字段(SchoolId)来判断,只留有rowid最小的记录
    delete from School
    where SchoolId  in (select  SchoolId  from School  group  by  SchoolId   having  count(SchoolId) > 1)
    and rowid not in (select min(rowid) from  School  group by SchoolId  having count(SchoolId )>1)
或者使用:delete from School
    where SchoolId  in (select  max(SchoolId)  from School  group  by  SchoolId   having  count(SchoolId) > 1)
    3、查找表中多余的重复记录(多个字段)
    select * from SchoolPro a
    where (a.SchoolId,a.SchoolName) in  (select SchoolId,SchoolName from SchoolPro group by SchoolId,SchoolName  having count(*) > 1)
    4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
    delete from SchoolPro a
    where (a.SchoolId,a.SchoolName) in  (select SchoolId,SchoolName from SchoolPro group by SchoolId,SchoolName having count(*) > 1) and rowid not in (select min(rowid) from SchoolPro group by SchoolId,SchoolName having count(*)>1)
    5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
    select * from SchoolPro a
    where (a.SchoolId,a.SchoolName) in  (select SchoolId,SchoolName from SchoolPro group by SchoolId,SchoolName having count(*) > 1) and rowid not in (select min(rowid) from SchoolPro group by SchoolId,SchoolName having count(*)>1)


支持(1中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
x123992009
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:设计员 帖子:370 积分:2135 威望:0 精华:0 注册:2009-2-6 23:10:47
  发帖心情 Post By:2010-4-16 19:58:10

收藏了..已备.用到的时修来看.

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

删除数据库中重复记录的SQL语句








签名