精华内容
下载资源
问答
  • 数据库表去重

    千次阅读 2018-03-30 18:34:43
    表示其后所有字段合并在一起去重,distinct必须放在最前面 如: select distinct name, age from tb; 表示去除名字和年龄都相同的字段 指定列去重 利用分组和子查询 去掉重复记录 select * from student ...

    distinct

    表示其后所有字段合并在一起去重,distinct必须放在最前面
    如:
    select distinct name, age from tb;
    表示去除名字和年龄都相同的字段

    指定列去重

    利用分组和子查询

    • 去掉重复记录
      select * from student where id in (select Max(id) from student group by score)
      去除相同分数的学生数据

    • 获取重复记录
      select * from student where id not in (select Max(id) from student group by score)

    展开全文
  • sql数据库表去重实例

    2018-08-17 11:38:07
    实现数据库表多条件去除重复,在开发项目的过程中遇到类似的问题,所以总了一个例子
  • rem 去重排序是升序,一般用于数据类型只有字符串、数字类型和布尔类型的,其他数据类型没测试 rem 参数一:127.0.0.1, 数据库IP地址 rem 参数二:root, 数据库用户名 rem 参数三:111111, 数据库密码 rem 参数...
    RemoveRepetition.py
    #!/usr/bin/python2.7  
    # -*- coding: utf-8 -*-  
    
    import MySQLdb
    import sys
    
    
    def removeRepetition(argv):
        host = argv[0]
        username = argv[1]
        password = argv[2]
        dbname = argv[3]
        tablename = argv[4]
        withKey = True
    
        # 连接数据库
        db = MySQLdb.connect(host, username, password, dbname, charset='utf8' )
        cursor = db.cursor()
        try:
            # 查询主键
            cursor.execute('SELECT column_name FROM INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` WHERE table_name=\'%s\' AND constraint_name=\'PRIMARY\''%tablename)
            key = cursor.fetchone()[0]
            # 查询主键是否自增,自增忽略主键
            cursor.execute('SELECT * FROM information_schema.columns WHERE table_name=\'%s\' AND column_name=\'%s\' AND extra=\'auto_increment\''%(tablename, key))
            withKey = len(cursor.fetchall()) == 0
    
            # 查询所有字段名,以逗号分隔
            cursor.execute('SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ",") FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = \'%s\' AND TABLE_NAME = \'%s\''%(dbname, tablename))
            allcols = cursor.fetchone()[0].split(',')
    
            if (not withKey) and (key in allcols):
                # 去除主键
                allcols.remove(key)
    
            # 拼接字段名
            allcolsName = ''
            for col in allcols:
                allcolsName += col + ','
            # 去掉最后一个逗号
            allcolsName = allcolsName[:-1]
    
            # 去重排序查询
            cursor.execute('select distinct %s from %s order by %s'%(allcolsName, tablename, allcolsName))
            rows = cursor.fetchall()
    
            # 清空表
            cursor.execute('truncate table ' + tablename)
    
            # 重新插入不重复的数据
            for row in rows:
                values = ''
                cursor.close()
                for v in row:
                    cursor = db.cursor()
                    if isinstance(v, unicode):
                        values += '\'%s\''%v
                    elif isinstance(v, str):
                        values += u'\'%s\''%v
                    else:
                        values += str(v)
                    values += ','
                values = values[:-1]
                sql = 'insert into %s(%s) values(%s)'%(tablename, allcolsName, values)
                print sql
                cursor.execute(sql)
                cursor.close()
            db.commit()
        except Exception as e:
            print e
            cursor.close()
            db.rollback()
    
        db.close()
    
    
    
    if __name__ == '__main__':
        try:
            removeRepetition(sys.argv[1:])
        except Exception as e:
            print e
    
    RemoveRepetition.bat
    @echo off 
    cd  %~dp0
    rem 去重排序是升序,一般用于数据类型只有字符串、数字类型和布尔类型的表,其他数据类型没测试
    rem 参数一:127.0.0.1, 数据库IP地址
    rem 参数二:root, 数据库用户名
    rem 参数三:111111, 数据库密码
    rem 参数四:dbname , 数据库名称
    rem 参数五:tablename, 数据库表名
    python RemoveRepetition.py 127.0.0.1 root 111111dbname tablename
    pause
    echo exit
    
    展开全文
  • [img=...但是左连接后查询就出现重复的结果了,很多人说distinct只能去重行中重复的,不能去掉列重复,那怎么去掉重复列呢,求大神们指导一下,谢谢啦!
  • 数据库去重

    2021-03-11 15:00:56
    数据库中如何去重数据库去重,需要分五步走 一、找出重复值清单,利用distinct或group by 的方式将重复值清单取出 二、将没有重复值的数据利用create table table_name as 步骤一中的查询语句 三、将原中数据...

    数据库中如何去重:

    方案其实就是把不重复的值先取出来,新建至中间表,然后再把中间表返回到原表中
    数据库中去重,需要分五步走
    一、找出重复值清单,利用distinct或group by 的方式将重复值清单取出
    二、将没有重复值的数据利用create table table_name as 步骤一中的查询语句
    三、将原表中数据利用truncate table table_name;的方式清空
    四、利用insert into table select * from 无重复数据的表中
    五、将刚刚建立的表清掉即可

    推荐一个学习数据库,python,linux干货比较多的公众号:“数据与编程之美”

    展开全文
  • 数据库数据去重方法在大量数据库数据处理的时候,发现很多重复项,这些重复项给工作带来很多不便,那么,怎么才能更快的去重呢,有没有好的数据库数据去重方法呢,下面给大家推荐几种数据库数据去重方法,简单的了解...

    数据库数据去重方法

    在大量数据库数据处理的时候,发现很多重复项,这些重复项给工作带来很多不便,那么,怎么才能更快的去重呢,有没有好的数据库数据去重方法呢,下面给大家推荐几种数据库数据去重方法,简单的了解下吧。

    假设现在数据库中有一个人员表(user),表中包括 主键ID,,姓名、身份证号码、等字段。由于程序的的原因、好来发现表中有许多理论上重复的数据(即姓名、和身份证号相同的数据),现在要求根据身份证号码和姓名去除表中的重复数据。

    该怎么做呢,这里有一个方案可以参考一下:

    select Max(ID) as Id,姓名,身份证号 from User group by 姓名,身份证号;

    通过上面的这条Sql语句即可得到一份没有重复姓名和身份证号的一组数据,当然只等得到Id、姓名、和身份证号,其实我们真正想要的只有Id一列而已。因为我们只要得到没有重复数据的id就可以找出所有的并且不重复的数据了。

    接下类我们使用嵌套的查询 得到所有的不重复数据的Id

    select Id  from (select Max(ID) as Id,姓名,身份证号 from User group by 姓名,身份证号) as t

    得到我们需要的ID之后我们可以有好几种选择:1、使用  not IN 删除所有Id不在以上查出的Id范围的数据。即删除重复的数据

    delete form user where  id not in (select Id from (select Max(ID) as Id,姓名,身份证号 from User group by 姓名,身份证号) as t );

    使用not in 非常耗费数据库资源,并且 如果数据量大的话,会非常的慢,可能会慢的难以忍受,因此不建议使用。

    除了可以使用 Not In 之外还可以使用临时表的方法:

    1、找出所有不重复的数据

    select * into #temp1  from user where id in (select Id from (select Max(ID) as Id,姓名,身份证号 from User group by 姓名,身份证号) as t );

    2,删除原表中的所有数据

    delete from user;

    3、将临时表中的数据在插入会user表

    insert into user  select * from #temp1;

    4,删除临时表

    drop #temp1;

    现在总结一下我的思路

    这里的关键是根据需要判断是否重复的字段分组后、使用聚合函数Max 或者Min得到唯一的ID,这一点十分重要、

    喜欢 (1)or分享 (0)

    展开全文
  • 数据库信息去重查询

    2019-09-26 21:59:54
    如果某数据库中一张保存有大量的数据,二这张表的某些数据是相同的,那么如何依据这个相同的字段值而查询出与这个字段相关的记录的最后一条或者是第一条数据呢? 首先,就单纯地以实验的角度来说,首先需要创建...
  • 关于数据库去重

    2019-10-08 23:27:40
    数据库中存在大量的重复内容,并且存在着外键关系 先删除外键的,以内容分组,查询条数大于一的,将该id在多对多的中删除 delete from poem2cls where poem_id in(select id from (select id,count(*)as count ...
  • 数据库数据去重

    2015-02-03 16:48:05
    假设现在数据库中有一个人员(user),中包括 主键ID,,姓名、身份证号码、等字段。由于程序的的原因、好来发现中有许多理论上重复的数据(即姓名、和身份证号相同的数据),现在要求根据身份证号码和姓名...
  • 关于数据库内容去重并且留一条重复的 删除书籍名字和作者id都一样的数据,并且在重复的数据中保留一条数据 方法一是不改变原,利用group by 的去重效果,创建了一个新的表格 方法一: SELECT * FROM book GROUP...
  • 一、导出导出用户对象:1、plsql登录到数据库 2、查询当前用户的默认空间(以DEMO1账户为例) 用DEMO1用户登陆plsql,在上图的窗口里的Users的分支下找到当前的用户名DEMO1,再点view,在右边的Default tablespace...
  • 数据库数据去重方法

    2016-11-08 21:41:57
    假设现在数据库中有一个人员(user),中包括 主键ID,,姓名、身份证号码、等字段。由于程序的的原因、好来发现中有许多理论上重复的数据(即姓名、和身份证号相同的数据),现在要求根据身份证号码和姓名...
  • 创建临时并插入数据(注意:该方法其实就拼接一个很长的SQL,因为数据库对SQL长度有限制,所以调用该方法传入的集合要注意大小限制)为了节约长度,减少换行和变量名的长度等等 --> <!-- 对于本例SQL,传入的是6...
  • 一、数据库的查询语句:1、查询整个: select * from 表名例:2、通过条件查询某一行数据: select * from 表名 where 字段名例:3、某一列数据去重查询: select distinct 字段名 from 表名例:4、查询的结果按...
  • sql语句去重sql语句通过DISTINCT关键字去重, 用于返回唯一不同的值。DISTINCT关键字需要搭配SELECT 语句使用,语法为SELECT DISTINCT 列名称 FROM 名称。如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就...
  • 数据库表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。 表A: 1.作用于单列 select distinct name from A 执行后...
  • excel数据导入数据库去重的做法

    千次阅读 2015-11-12 10:05:34
    基本做法就是使用两张,中间和目标。  使用navicat直接把excel...导入好后中间中肯定有重复数据,然后使用SQL的distinct语句对中间进行去重,然后把不重复的数据add到目标中。  就是这么简单。
  • 数据库SQL去重,保留一条数据

    万次阅读 2017-06-15 22:17:09
    1、查找中多余的重复记录,重复记录是根据单个字段(teamId)来判断 select * from team where teamId in (select teamId from team group by teamId having count(teamId) > 1) 2、删除中多余的重复...
  • 数据库数据去重distinct()的用法

    千次阅读 2019-03-04 18:03:08
    中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。 关键词 DISTINCT 用于返回唯一不同的值。 语法: SELECT DISTINCT 列名称 FROM 名称 使用 DISTIN...
  • ##问题 mysql数据库表osc_table_a中出现了重复记录,需要通过sql来去重,仅留下最早插入的记录。表osc_table_a:id row1 row2 row31 123 abc *****2 123 def *****3 123 abc *****4 456...
  • 查询结果的去除重复记录:...实际开发中,大部分情况都不是从单中查询数据,一般都是多张表联合查询。一般一个业务都会对应多张表,比如:学生和班级,起码两张 。 根据语法出现年代分类:SQL92(一些老的DBA可能还
  • oracle 数据库多字段去重方法介绍:distinct 关键字、group by 、row_number ()over(partition by 列 order by 列 desc)我的需求是:根据某几列去重 查询出去重后的全部信息。最后我选择的是第三种方法。我的想法:...
  • 关于sql去重,我简单谈一下自己的简介,如果各位有建议或有不明白的欢迎多多指出。关于sql去重最常见的有两种...假如有张UserInfo,如下图:现在我们要去掉完全重复的数据:SELECT DISTINCT * FROM dbo.UserInf...
  • 数据库去重

    2015-04-01 18:20:55
    mysql数据库去除重复数据  (2012-11-13 18:48:46) 转载▼ ...数据库数据去重 ...创建临时 ...今天对数据库进行了判断重复,以前对数据库的语句只会简单操作,下面拿一个简单的例子对数据进行去重
  • 关于sql去重,我简单谈一下自己的简介,如果各位有建议或有不明白的欢迎多多指出。关于sql去重最常见的有两种...假如有张UserInfo,如下图:现在我们要去掉完全重复的数据:SELECT DISTINCT * FROM dbo.UserInf...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,077
精华内容 430
关键字:

数据库表去重