del重复数

楼主 发表于: 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。

时间: 2024-10-18 19:49:11

del重复数的相关文章

DEL RD命令

DOS下的DEL命令是用来删除文件的,而DOS下的RD命令才是用来删除文件夹的,命令的具体使用方法请看下面的文字: del 命令: 删除一个或数个文件. DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names names 指定一个或数个文件或目录列表.通配符可被用来 删除多个文件.如果指定了一个目录,目录中的所 有文件都会被删除. /P 删除每一个文

1000万条有重复的字符串,找出重复数前10的字符串

输入的时候可以使用map来存储,然后将map里的数据转到vector里,按重复数从大到小输出10个即可. #include <iostream> #include <algorithm> #include <map> #include <string> #include <vector> using namespace std; map<string, int> mp; struct node { string s; int num;

db2数据导出导入del与ixf格式区别

之前做数据迁移的时候遇到乱码的一些坑,总结一下. 一般导入导出: db2 export to /home/xxxx.del of del select * from tablename db2 import from /home/xxxx.del of del insert into tablename db2 export to /home/xxxx.IXF of IXF select * from tablename db2 import from /home/xxxx.IXFof IXF

del

del 删除变量,而非数据

append()/extend()/insert()/remove()/del/pop()/slice列表分片

member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88] member.append('字符串')#在列表结尾处增加字符串 member.extend(('字符串1'),('字符串2'))#在列表结尾增加字符串1,2 member.insert(1,'字符串')#在下标为1的位置后插入字符串 member.remove('string')#在列表中删除string del member[1]#删除下标为1的字符串 member.

求重复数算法思路

关于求重复数,我们先来看看两道常见的题 1.有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少? 2.1-N(N最大32000,且未知),内存只有4K,找出其中的重复数 找重复数,基本的思路有四个, 第一种思路,建立布尔数组,用每一位的下标来表示某个数的值,用每一位的值来表示该数是否重复.这种思路适合数组中最大数不大的情况.一旦最大数过大,那么我们需要建立的布尔数组便会过大,这时候空间消耗就非常大了,有可能会超出内存需求.时间复杂度为

Python 3 条件、循环和assert、pass、del

条件: if 条件: 语句块 elif: 语句块 else: 语句块 elif 表示 else if 这居然是合法的!!!1 < x < 2!!! [python] view plain copy print? >>> if 1 < x < 2: print('True') True and 表示且 [python] view plain copy print? >>> if x > 1 and x < 2: print('True'

del命令实现全盘删除指定文件

@echo off Rem :全盘删除指定文件 set "fileName=Normal.dotm" set "outPutPath=C:\result.txt" echo. > %outPutPath% echo 正在删除 for %%i in (C D E F G H I J K L M N O P Q R $ T U V W X Y Z) do ( rem del /s /q %fileName% > %outPutPath% ) echo 删除完

Python--列表生成式(List Comprehensions)、del语句和生成器(generator)

1.运用列表生成式,可以写出非常简洁的代码 例如: squares = [] for x in range(10): squares.append(x**2) print squares # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 可以写成如下形式: squares = [x**2 for x in range(10)] for循环后面还可以加上if语句来作为判断条件,如可以得到偶数 [x**2 for x in range(10) if x % 2 == 0]