楼主 发表于: 2010-06-21 11:46:31

本帖最后由 luckycynthia 于 2010-06-21 11:47:46 编辑

在抓取数据后对数据进行操作的途中,有时候会碰到重复数据,重复数据有时候会导致了数据库部分设置不能正确设置,所以就要进行筛选。

首先,有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

对于第一种重复,比较容易解决,使用:

  select distinct * from tableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除:

select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

对于第二种重复,我们需要使用以下这种方法,假设重复字段为Mobile和UnitName:

select * from tableNam

where [Mobile] in (select [Mobile] from info_user_a group by [Mobile] having count([Mobile])>1)

and id not in (select min(id) from info_user_a group by [Mobile] having count([Mobile])>1)

and [UnitName] in (select [UnitName] from info_user_a group by [UnitName] having count([UnitName])>1)

and id not in (select min(id) from info_user_a group by [UnitName] having count([UnitName])>1)

这样是得到了重复的数据,如果想要删除,只需把开头的select *改成delete即可。

接下来是重点,如果数据库真的有一千万,或者上千万,千万别直接对整个库进行操作,好点的办法就是把一个库分成多个,比如原先有1000W,就分成10个100W,然后分别对这10个100W的库操作,不过如果真的有上千万的数据,建议还是改用oracle数据库比较好,我用sql server 2008感觉上都有点吃不消,而且还是双核酷睿CPU,可能是内存有点小,只有2G。

del重复数的更多相关文章

  1. 【Leetcode】287. 寻找重复数(数组模拟链表的快慢指针法)

    寻找重复数 根据题意,数组中的数字都在1~n之间,所以数字的范围是小于数组的范围的,数组的元素可以和数组的索引相联系. 例如:nums[0] = 1 即可以将nums[0]作为索引 通过nums[0] ...

  2. [LeetCode] Find the Duplicate Number 寻找重复数

    Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...

  3. leggere la nostra recensione del primo e del secondo

    La terra di mezzo in trail running sembra essere distorto leggermente massima di recente, e gli aggi ...

  4. windows 中去除Ctrl+Alt+Del才能登录

    安装windows 7后登录的时候有一样很麻烦的步骤是需要先按Ctrl+Alt+Del,才能输入用户密码进行登录.这里笔者介绍一下如何取消这个东西. 点击“开始菜单”,点击“控制面板”. [管理工具] ...

  5. <Interview Problem>最小的“不重复数”

    百度的一道笔试题目,看到博客园讨论挺热烈的,也写一下玩玩. 实现思想:举个简单的例子11233,从高位到低位开始判断是否有重复数,高位有重复数后,首先修改高位的,高位修改后变为12233,因为要求最小 ...

  6. day26:面向对象进阶:set、get、del反射和内置

    三 __setattr__,__delattr__,__getattr__ __开头的都是内置的,不定义系统都会有.如果自己定义的话,就会覆盖系统内置的,执行自定义的部分(是否有完成设置的语法,有的话 ...

  7. 枚举全排列(包括数列中有重复数)的C语言实现

    据说是用了DFS的思想--然鹅并不知道这是DFS. 主要就是选取一个数放到数组相应位置上,然后递归的排列剩下的数组,将剩下的数组递归排列完了之后再把数放回去,然后这一层递归就返回了-- 有重复数的话遇 ...

  8. svn恢复被删除的分支 svn del 分支

    笔者不小心,在操作时,删除了一个主开发分支(main_dev). 一. 悲剧的语句: svn del  -m"1.误删除分支"  http://svr_path/branches/ ...

  9. python里的del变量无法立刻释放内存的解决办法

    最近在python开发的时候,用到了一些很占用内存的操作,导致后续程序执行很慢甚至无法执行.探索了一下,最终解决了这个问题. 截图解释: python变量占用了内存,仅仅通过del变量的方式,只是让这 ...

随机推荐

  1. Java SE (6)之 多线程

    package com.sunzhiyan03; /* * 演示多线程 * */ public class Demo3 { public Demo3() { // TODO Auto-generate ...

  2. WCF学习笔记一(概述)

    WCF  Windows Communication Foundation 分布式通信框架.WCF是对现有分布式通信技术的整合.是各种分布式计算的集大成者.主要整合技术如下图: WCF的服务不能孤立的 ...

  3. 学习java随笔第九篇:java异常处理

    在java中的异常处理和c#中的异常处理是一样的都是用try-catch语句. 基本语法如下 try { //此处是可能出现异常的代码 } catch(Exception e) { //此处是如果发生 ...

  4. Sqlserver 列转行 行转列

    sqlserver的行转列 列转行问题 行转列:1 使用Case when 方式 CREATE TABLE [StudentScores]( [UserName] NVARCHAR(20), --学生 ...

  5. C#缓存处理

    第一种方式: 在ASP.NET中页面缓存的使用方法非常的简单,只需要在aspx页的顶部加这样一句声明即可: <%@ OutputCache Duration="60" Var ...

  6. windows下安装wamp和wordpress

    安装wamp WAMP是一个windows上的php开发集成环境,一键安装php,apache和mysql,非常方便. 双击wampserver2.2exxxxxxxxxx.exe文件进行安装,安装过 ...

  7. MVC权限模块

    设计方向: 1.摒弃SiteMap,避免在容易书写错误的sitemap中书写,导航在controller和action上打标签生成. 2.controller统一继承basecontroller,在b ...

  8. JavaScript中Ajax的get和post请求

    AJAX = 异步 JavaScript和XML(Asynchronous JavaScript and XML) 作用:在不重新加载整个网页的情况下,对网页的某部分进行更新.   两种请求方式: 1 ...

  9. sae的kvdb使用注意

    之前没仔细看,原来sae的kvdb使用一定要先调用初始化函数 $kv = new SaeKV(); $kv->init();//必须使用 $kv->set('index', $data);

  10. python中的buildin函数详解(第一篇)

    这会是很长的一个帖子,因为我打算从python最基础的东西开始,尝试去完全的掌握它,buildin中有一些常用的函数比如 abs, open, setattr, getattr, 大家都很了解他们的用 ...