从mysql数据库中删除重复数据

时间:2013-03-07 09:04:58

标签: mysql sql

处理数据库相关的东西。主要是当客户端以excel表的形式向您发送数据并且在一些excel操作之后将数据推送到数据库表时完成。我也做了很多次。

这种方法面临的一个非常普遍的问题是,它有时会导致重复的行,因为发送的数据主要来自人力资源和财务等部门,人们并不了解数据规范化技术[: - )]。 / p>

我将使用Employee表,其中列名是id,name,department和email。

以下是用于生成测试数据的SQL脚本。

创建架构TestDB;

CREATE TABLE EMPLOYEE
(

   ID INT,
   NAME Varchar(100),
   DEPARTMENT INT,
   EMAIL Varchar(100)
);

INSERT INTO EMPLOYEE VALUES (1,'Anish',101,'anish@howtodoinjava.com');

INSERT INTO EMPLOYEE VALUES (2,'Lokesh',102,'lokesh@howtodoinjava.com');

INSERT INTO EMPLOYEE VALUES (3,'Rakesh',103,'rakesh@howtodoinjava.com');

INSERT INTO EMPLOYEE VALUES (4,'Yogesh',104,'yogesh@howtodoinjava.com');

- 这些是重复的行

INSERT INTO EMPLOYEE VALUES (5,'Anish',101,'anish@howtodoinjava.com');
INSERT INTO EMPLOYEE VALUES (6,'Lokesh',102,'lokesh@howtodoinjava.com');

解决方案:

DELETE e1 FROM EMPLOYEE e1, EMPLOYEE e2 WHERE e1.name = e2.name AND e1.id > e2.id;

3 个答案:

答案 0 :(得分:0)

使用过滤器删除Excel工作表中的所有重复记录,然后将这些记录插入到您的数据库中

对唯一

使用distinct关键字

How to insert Distinct Records from Table A to Table B (both tables have same structure) 检查这个堆栈溢出链接

答案 1 :(得分:0)

在名称字段上添加唯一约束并使用以下查询 插入员工价值观 请参阅"INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"

答案 2 :(得分:0)

在插入数据库之前,您始终可以确保该记录已存在与否,在您的情况下,您可以对其唯一键具有条件,这对于每个员工都是不同的。此外,您可以将单个列作为唯一键或使用多个列唯一标识记录的复合键。