首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用sql语句把数据库中的重复数据消除,只保留一条,可以做吗? [已结贴,结贴人:cnhuai]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 10:57:44 楼主
    有个 数据库 有 大量的数据大概600万条
    里面有大量的重复数据
    如何利用SQL语句来把重复的数据消除
    相同的 数据只保留一条?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 11:02:501楼 得分:0
    delete from Ytab where rowid not in (select max(rowid) from Ytab  group by 字段);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 11:03:332楼 得分:0
    delete from tablename a  where rowid <>(select min(rowid) from tablename b
    where a.id=b.id goup by a.id)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 11:06:183楼 得分:0
    这个问题好像都回答过了,
    使用分析函数的RowNum就可以,
    楼主给出表结构,给你完整SQL。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 11:21:084楼 得分:0
    补充说明:

    数据库表中有及个字段
    其中有个是IP字段 
    大量的数据中IP数据有不少重复

    现在想把记录中IP相互重复的消掉,只保留一条

    数据库名 ipinfo

    表中大概有500万条数据
    重复的有20万条

    想得到的不重复的(500-20)万条数据
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 11:28:365楼 得分:8
    delete from ipinfo where rowid not in (select max(rowid) from ipinfo group by IP);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 11:44:016楼 得分:0
    说个清楚的:表名ipinfo 
    ID    ip        msk 
    1  192.168.1.1  24 
    2  192.168.1.2  24 
    3  192.168.1.1  23 
    4  192.168.1.1  26 

    不管msk字段是什么 就看ip的相同情况 

    错做结果: 
    ID    ip        msk 
    1  192.168.1.1  24 
    2  192.168.1.2  24 

    我在网上找的资料
    看看这样些对不对:
    delete from ipinfo a where a.id <>(select min(id) from ipinfo where ip=a.ip)

    如果是对的 不理解a是什么意思 
    以前学 SQL语句时没碰到这种写法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 12:09:247楼 得分:0
    谁给我解释下:
    delete from ipinfo a where a.id  <>(select min(id) from ipinfo where ip=a.ip) 

    嘿嘿
    我不太理解
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 12:16:108楼 得分:2
    delete from tablename where 条件=条件
                              and rowid <>(select max(rowid) from tablename where 条件=条件)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 13:04:379楼 得分:5
    引用 6 楼 cnhuai 的回复:
    delete from ipinfo a where a.id  <>(select min(id) from ipinfo where ip=a.…

    a实际上就是表ipinfo的别名~~a.id你可以理解为ipinfo.id~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 14:38:5710楼 得分:0
    来晚了。楼上各位都说了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 15:08:5711楼 得分:5
    delete from ipinfo a where a.id  <(select max(id) from ipinfo where ip=a.ip) 
    思想都一样,都是先找到保留的记录,在删除其他数据记录
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved