mysql插入数据时,去掉重复的数据;

1. 利用insert ignore into语句去重

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( ‘J‘, ‘T‘);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( ‘J‘, ‘T‘);
Query OK, 0 rows affected (0.00 sec)

2.查询过滤重复数据

①. 利用MySQL的关键字DISTINCT去重

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

②. 利用group by进行去重

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

3. 删除表中的重复数据

思路:先建一个临时表,把不重复的数据数据存放在临时表中,然后将原表删除,再将临时表rename成正式表

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex FROM person_tbl  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

原文地址:https://www.cnblogs.com/jingmin/p/9089909.html

时间: 2024-10-09 21:47:01

mysql插入数据时,去掉重复的数据;的相关文章

mysql 插入中文时出现ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern ame' at row 1

1 环境: MySQL Server 6.0  命令行工具 2 问题 :  插入中文字符数据出现如下错误: ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern ame' at row 1 3 当时环境: mysql> insert into user(id , username , birthday, sex, address) values('2' , ' 李四' , '1980 12

复制一张表的数据到另一张表,jq.grid里面有时间类型数据时展示不了数据

1.复制一张表的数据到另一张表 insert into jct_sys_lock_tbl_new  (BGN_DT, END_DT, TYPE, DESCR, flag, format, range, count)  select BGN_DT, END_DT, TYPE, DESCR, flag, format, range, count    from jct_sys_lock_tbl 也可以: insert into jct_sys_lock_tbl_new  select *    fr

thinkphp 更新数据时如果未修改数据,返回结果判断错误

thinkphp的CURD中,使用save方法时会出现一个奇怪的问题,即如果数据没有更新(与原数据相同),返回值判断为false.其实很久之前就发现了这个问题,一度以为是官方代码的问题,但是一直拖延到最近才想到要去解决这个问题.不得不说:"明日复明日,明日何其多.事事待明日,万事皆蹉跎.",与君共勉! 在官网上搜索了这个问题之后,发现官方已经解决了这个问题,原本的判断: $result = $Model->where('id=1')->save($data); if($re

mysql数据库update时只更新部分数据方法

需求:更新url中最一个字符的'-1'改为'-5',前面的内容保持不变 url列的内容如下:http://h5game.ecs.cedarmg.com/a/captal/dispther.do?deviceid=b-01-1 SELECT * from qrmsg WHERE url LIKE '%1' http://h5game.ecs.cedarmg.com/c/captal/dispther.do?deviceid=b-01-1 需要把最后这个-1改成-5 操作方式如下: UPDATE q

Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL

我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录. 这样的逻辑固然可以通过两条sql语句完成. SELECT COUNT(*) FROM xxx WHERE ID=xxx; if (x == 0) INSERT INTO xxx VALUES; else UPDATE xxx SET ; 但是这样操作在性能上有所损失, 代码结构感觉有点丑陋. 其实MySQL提供了可以在一个SQL语句中完成上述逻辑

Mysql 插入判断 不存在重复记录则插入

Mysql insert if no exist 由于Mysql没有noexists之类的东西,只能用having 来构造一个false的条件 insert into DRUG_NAME1 (id,name,drug_id) select 7777,'drugname',666 from DRUG_NAME1 t where t.id=7777 having count(id)=0;

mongodb去除重复的数据

今天出现了一个新的需求,有个部门需要拿到mongodb中的数据,要求去掉其中一个字段内容相同的数据. 虽然mongodb中有distinct来去重,但是和mysql的distinct不同的是,mysql中能用distinct * 返回整条记录的信息,而mongodb的distinct我却只是返回去重的那个字段的数据(或许mongodb也可以返回整条,但是我不知道). mysql中的distinct返回完整记录: mongodb中distinct去重某个字段: 上边的内容并不是我想看到的结果,因此

mongodb去除重复的数据(二)

前天因为工作需要,开始着手对数据库中两千多万的数据中其中一个字段重复的数据进行去重. 原本使用一些测试的数据测试后,前天写的那个方法是可行的,但是当面对这个两千万的真实数据时,我却发现这方法有些不顶用了,最终只好又经过若干次的尝试,总算成功去重. 最终总结一下整个过程: 1.这个方法就是上一篇所讲的,利用mongodb的游标dbcursor和while循环的方式. var res=db.test.find(); while(res.hasNext()){ var res1=db.test.fin

jxl读取excel浮点数据时,小数点后三位截取问题

今天导入Excel数据时,发现很多浮点数据被自动四舍五入只保留了三位,原来是jxl里对getContents()进行了封装,对数值型数据作了该处理.一般我们会对读取excel的一整套流程作为工具类,那么在读取单元格数据时,应该将数据分成三类(一般情况):日期,数值,普通字符串.最后统一转换成字符串类型. 如果是日期类型,可以使用DateCell对象提供的方法: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Cell