2013-03-07 4 views
1

Чтобы работать с материалами, связанными с базой данных. В основном это делается, когда клиент отправляет вам свои данные в виде листов Excel и вы перемещаете эти данные в таблицы базы данных после некоторых улучшений. Я также делал это много раз.Удалить повторяющиеся данные из базы данных mysql

Очень распространенная проблема, с которой сталкиваются в этом подходе, состоит в том, что иногда это может привести к дублированию строк, поскольку данные отправляются в основном из таких отделов, как HR и финансы, где люди не очень хорошо знают методы нормализации данных [:-)].

Я буду использовать таблицу 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,'[email protected]'); 

INSERT INTO EMPLOYEE VALUES (2,'Lokesh',102,'[email protected]'); 

INSERT INTO EMPLOYEE VALUES (3,'Rakesh',103,'[email protected]'); 

INSERT INTO EMPLOYEE VALUES (4,'Yogesh',104,'[email protected]'); 

--These являются повторяющимися строками

INSERT INTO EMPLOYEE VALUES (5,'Anish',101,'[email protected]'); 
INSERT INTO EMPLOYEE VALUES (6,'Lokesh',102,'[email protected]'); 

Решение:

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

Это вопрос? –

+0

так в чем проблема? –

+0

Вы всегда можете сделать столбец электронной почты уникальным. Или даже соединить имя, идентификатор?, E-mail как уникальное в вашей базе данных. –

ответ

0

удалить все повторяющиеся записи в самом первенствовать лист с помощью фильтра, а затем вставьте эти шнур в Уре базы

использования отчетливого ключевым слова для уникальной проверки

How to insert Distinct Records from Table A to Table B (both tables have same structure) этой стек переполнение ссылка

0

Добавить Уникальное ограничение на поле имени и использовать ниже запрос INSERT INTO работника дорожили Пожалуйста, обратитесь "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"

+0

Вы предполагаете, что 'NAME' уникален. Ссылка, на которую вы ссылаетесь, является хорошим способом решения проблемы, но вы должны тщательно подумать о том, что на самом деле делает строку уникальной. – JodyT

+0

Ответ основан на запросе на удаление, предоставленном в вопросе – shola

+0

Я пропустил эту часть, мои извинения. Но это также было направлено на @Sadia Aziz. Это не редкость для сотрудников с тем же именем. – JodyT

0

Вы всегда можете убедиться, что перед вставкой в ​​базу данных либо эта запись уже существует, либо нет, в вашем случае вы можете иметь условие на свой уникальный ключ, который будет отличаться для каждый сотрудник. Кроме того, вы можете иметь один столбец как уникальный ключ или составной ключ, который использует несколько столбцов для уникальной идентификации записи.

Смежные вопросы