准备示例数据

以下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 删除数据表重复行的更多相关文章

  1. MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  2. 十、MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  3. php MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  4. 吴裕雄--天生自然MySQL学习笔记:MySQL 删除数据表

    MySQL中删除数据表是非常容易操作的, 但是在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_nam ...

  5. MySQL删除数据表中重复数据

    今天遇到一个问题,数据表的数据有重复的,关键原因在于新增数据时,没有根据条件先判断数据是否存在,当数据存在时进行有关条件的更新,不存在时做新增数据. 对于表中已经存在的数据处理办法的方法: 1.先根据 ...

  6. Mysql 删除数据表的三种方式详解

    用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, 用 delete. 删除强度:dro ...

  7. 数据库删除数据表重复数据,只留下ID较小的行

    删除表中重复数据,留下ID比较小的行 delete from 表 where [重复字段] in (select [重复字段] from 表 group by 字段 having count([字段] ...

  8. sql语句删除数据表重复字段的方法

    大家都可能遇到字段重复的情况,网上很多人在找方法,也给出了一些方法,但是有的方法是误导大家,铁牛写出以下方法,方便大家使用 1.通过group by把重复的字段筛选出来,并建立临时表tmp 1 cre ...

  9. mysql 删除单表内多个字段重复的数据

    mysql 删除单表内多个字段重复的数据 DELETE from lot_log_payflow WHERE (pay_no,sub_flow_type) in () s1) AND id ) s2) ...

随机推荐

  1. “全栈2019”Java第四十一章:static关键字

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. request.getSession()、reqeust.getSession(false)和request.getSession(true)

    getSession()/getSession(true):当session存在时返回该session,否则新建一个session并返回该对象 getSession(false):当session存在 ...

  3. P4097 [HEOI2013]Segment 李超线段树

    $ \color{#0066ff}{ 题目描述 }$ 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段.记第 i 条被插入的线段的标号为 i 给定一个数 k,询问与直线 x = k 相交的线 ...

  4. Chrome-headless 模式,没有UI界面的自动化UI测试

    如果在本机执行UI自动化脚本,打开的浏览器总是会不同程度的影响你做别的事情,那么我们可以采用 无界面运行我们的UI自动化,这种模式下运行脚本并不会真正地打开浏览器,整个过程都是在后台执行的.爽歪歪. ...

  5. flask实战-个人博客-使用类组织配置

    使用类组织配置 在实际需求中,我们往往需要不同的配置组合.例如,开发用的配置,测试用的配置,生产环境用的配置.为了能方便地在这些配置中切换,你可以把配置文件升级为包,然后为这些使用场景分别创建不同的配 ...

  6. iptables开放所有端口

    iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT

  7. jdbc连接oracle的url的三种写法

    JDBC 链接oracle的三种URL写法 1.普通SID方式     jdbc:oracle:thin:username/password@x.x.x.1:1521:SID 2.普通ServerNa ...

  8. my35_MGR添加新节点

    MGR添加节点主要涉及以下两个参数 group_replication_group_seeds    #可以动态修改 group_replication_ip_whitelist      #需要关闭 ...

  9. SpringCloud---分布式配置中心---Spring Cloud Config

    1.概述 1.1 Spring Cloud Config是Spring Cloud的一个全新项目:   作用:为分布式系统中的基础设施.微服务应用提供集中化的外部配置支持:   分为服务端.客户端2个 ...

  10. Pitfalls of using opencv GpuMat data in CUDA kernel code

    Please note that cv::cuda::GpuMat and cv::Mat using different memory allocation method. cv::cuda::Gp ...