MySQL数据表合并去重的简单实现方法

网络编程 2025-03-13 11:40www.168986.cn编程入门

在数据整合与处理的场景中,我们常常面临一个挑战:如何将爬取的数据与现有的数据表进行合并并去重。本文将向你介绍一种在MySQL中实现这一目标的简单方法,通过示例代码,让你轻松掌握这一技能。

假设我们有两个结构相同的数据表,分别为pep和pep2。我们的目标是把pep2中的数据合并到pep中,并确保数据不重复。以下是具体步骤:

```sql

CREATE TABLE IF NOT EXISTS `pep/pep2` (

`id` INT UNSIGNED AUTO_INCREMENT,

`no` VARCHAR(100) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

```

```sql

insert into pep(no) values('abc');

insert into pep(no) values('caa');

insert into pep2(no) values('abc');

```

```sql

insert into pep (no) select no from pep2;

```

可能会出现重复数据。为了去重,我们可以创建一个临时表tmp,通过分组操作来筛选唯一的数据。

```sql

create table tmp select id, no from pep group by no;

```

在这个过程中,可能会遇到一种错误,这是由于MySQL的默认SQL模式导致的。解决这个问题的办法是修改全局和会话的SQL模式。

```sql

mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

```

接下来,删除原有的pep表,并将临时表tmp重命名为pep。可能会发现id字段的类型发生了变化,需要改回原来的类型并重新设置为自增主键。

```sql

drop table pep;

alter table tmp rename to pep;

alter table pep add primary key (id);

alter table pep modify id int auto_increment;

```

上一篇:js获取html的span标签的值方法(超简单) 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by