1

从事与数据库相关的工作。大多数情况下,当客户以 excel 表格的形式向您发送其数据并在一些 excel 操作后将该数据推送到数据库表时,它就完成了。我也做过很多次。

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

我将使用 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;
4

3 回答 3

0

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

于 2013-03-07T10:30:08.050 回答
0

在名称字段上添加唯一约束并使用下面的查询 INSERT INTO EMPLOYEE VALUES 请参考“INSERT IGNORE”与“INSERT ... ON DUPLICATE KEY UPDATE”

于 2013-03-07T09:15:38.170 回答
0

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

使用 distinct 关键字表示唯一

如何将不同记录从表 A 插入到表 B(两个表具有相同的结构) 检查此堆栈溢出链接

于 2013-03-07T09:12:01.933 回答