Mysql 删除数据表重复行
准备示例数据
以下sql创建表,并将示例数据插入到用于演示的contacts表中。
CREATE TABLE contacts (
id INT PRIMARY KEY AUTO_INCREMENT,
first_val VARCHAR(50) DEFAULT NULL,
last_val VARCHAR(50) DEFAULT NULL,
email VARCHAR(255) NOT NULL
);
INSERT INTO contacts (first_val,last_val,email)
VALUES ('Carine ','Schmitt','carine.schmitt@yiibai.com'),
('Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.com'),
('Roland','Keitel','roland.keitel@yahoo.com'),
('Julie','Murphy','julie.murphy@yahoo.com'),
('Kwai','Lee','kwai.lee@google.com'),
('Jean','King','jean.king@qq.com'),
('Susan','Nelson','susan.nelson@qq.com'),
('Jean','King','jean.king@gmail.com'),
('Peter','Ferguson','peter.ferguson@google.com'),
('Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'),
('Janine ','Labrune','janine.labrune@qq.com'),
('Susan','Nelson','susan.nelson@qq.com'),
('Janine ','Labrune','janine.labrune@qq.com'),
('Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'),
('Janine ','Labrune','janine.labrune@qq.com'),
('Susan','Nelson','susan.nelson@qq.com'),
('Roland','Keitel','roland.keitel@yahoo.com');
方式一 克隆表删除重复的行
以下是使用克隆/复制表删除重复行的步骤
- 克隆需要删除重复数据的表 ,其结构与要删除重复行的原始表相同。
- 将原始表中的
不同行插入直接表。 删除原始表或修改原始表名并将克隆表重命名为原始表。
例如,以下语句从contacts表中删除具有重复电子邮件(email)的行记录:
-- step1 克隆/复制表结构
CREATE TABLE contacts_temp LIKE contacts;
-- step2 数据不重复插入克隆表
INSERT INTO contacts_temp(first_val,last_val,email) SELECT first_val,last_val,email FROM contacts GROUP BY email;
-- step3 修改原始表以作备份,出错可以还原
ALTER TABLE contacts
RENAME TO contacts_copy;
-- step4 修改原始表为克隆表
ALTER TABLE contacts_temp
RENAME TO contacts;
方式二 DELETE JOIN 删除重复行
以下查询返回contacts表中的重复email值:
SELECT
email,
COUNT( email )
FROM
contacts
GROUP BY
email
HAVING
COUNT( email ) > 1;
可以看到,表中有重复email行记录。
使用DELETE JOIN语句删除重复的行
MySQL提供了可用于快速删除重复行的DELETE JOIN语句。
以下语句删除重复的行并保持最高的ID:
DELETE t1
FROM
contacts t1
INNER JOIN contacts t2
WHERE
t1.id < t2.id
AND t1.email = t2.email;
重复行记录已被删除。我们再次执行查找重复的电子邮件的查询:
SELECT
email, COUNT( email )
FROM
contacts
GROUP BY
email
HAVING
COUNT( email ) > 1;
该查询返回一个空集合,这意味着重复的行已被删除。
Mysql 删除数据表重复行的更多相关文章
- MySQL 删除数据表
MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...
- 十、MySQL 删除数据表
MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...
- php MySQL 删除数据表
MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 删除数据表
MySQL中删除数据表是非常容易操作的, 但是在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_nam ...
- MySQL删除数据表中重复数据
今天遇到一个问题,数据表的数据有重复的,关键原因在于新增数据时,没有根据条件先判断数据是否存在,当数据存在时进行有关条件的更新,不存在时做新增数据. 对于表中已经存在的数据处理办法的方法: 1.先根据 ...
- Mysql 删除数据表的三种方式详解
用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, 用 delete. 删除强度:dro ...
- 数据库删除数据表重复数据,只留下ID较小的行
删除表中重复数据,留下ID比较小的行 delete from 表 where [重复字段] in (select [重复字段] from 表 group by 字段 having count([字段] ...
- sql语句删除数据表重复字段的方法
大家都可能遇到字段重复的情况,网上很多人在找方法,也给出了一些方法,但是有的方法是误导大家,铁牛写出以下方法,方便大家使用 1.通过group by把重复的字段筛选出来,并建立临时表tmp 1 cre ...
- mysql 删除单表内多个字段重复的数据
mysql 删除单表内多个字段重复的数据 DELETE from lot_log_payflow WHERE (pay_no,sub_flow_type) in () s1) AND id ) s2) ...
随机推荐
- [ActionSprit 3.0] FMS安装与测试
1.运行Flash Media Server4.5.exe,安装选项可全默认,序列号可不填:输入用户名和密码需记住,登录时要用. 2.安装完成,在安装目录C:\Program Files\Adobe\ ...
- MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled
初试redis,删除或者修改值的时候报的错,解决方式是运行命令: 127.0.0.1:6379> config set stop-writes-on-bgsave-error no
- python模块与包详解
<1>.模块:任何 *.py 的文件都可以当作模块使用 import 导入 >>>improt test >>>b=test.a() >> ...
- 2019.2.14 t2 程序调试
代码: #include <cstdio> #include <iostream> #include <cstring> #include <algorith ...
- CRC32算法笔记
这几天在研究CRC32的计算过程,看了CRC算法的原理,也看了不少通过移位法实现的代码,但是算出的结果跟校验工具算的不一致. 折腾了好长时间,终于找到一个手工计算CRC32的文章,再对照IEEE 80 ...
- js 常用js正则表达式大全
一.校验数字的js正则表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字:^d{m,n}$ 5 ...
- 如何实现java的四则运算
很多语言底层对四则运算都有内部封装, 我们还是要重复造下轮子,不为别的, 就是为了面试可以多装一分 b, 假设你已经了解了什么是二进制, 什么是异或, 什么是移位运算, 什么是与, 这些不懂就别硬上( ...
- Django中的CSRF(跨站请求伪造)
Django中的CSRF(跨站请求伪造) Django CSRF 什么是CSFR 即跨站请求伪装,就是通常所说的钓鱼网站. 钓鱼网站的页面和正经网站的页面对浏览器来说有什么区别? (页面是怎么来的? ...
- Jenkins添加maven插件
1.1.1 安装Maven插件 我们要使用Jenkins+Maven对Java项目进行构建,需要安装Maven Project Plugin,具体安装过程请参考插件管理部分 1.1.2 3.Linux ...
- js方法的使用(z)
http://www.108js.com/article/article1/10025.html?id=58 javascript中正则匹配有3个方法,match,exec,test.这些方法都跟字符 ...