Rss & SiteMap

搭建论坛 http://bbs.diylsoft.com:8118/starforum/index.asp

搭建论坛是“搭建式”中文软件开发工具《搭建之星》、《网站·搭建者》技术交流的地方。
共2 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
dbs 发表于: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)

2楼
x123992009 发表于:2010-4-16 19:58:10
收藏了..已备.用到的时修来看.
共2 条记录, 每页显示 10 条, 页签: [1]

搭建之星 网站·搭建者 Copyright © 2000 - 2011
Powered By Dvbbs Version 8.2.0
Processed in 0.06445 s, 3 queries.