Как удалить Дубликаты в таблице MySQL

Хорошо ""; и изменено // Рисует Exit в and else if, поэтому в каждой строке записывается правильное количество символов. Спасибо @ 1201ProgramAlarm за напоминание.

7
задан ProfK 23 March 2009 в 09:37
поделиться

4 ответа

Много путей приводят к Риму. Это - то. Это очень быстро. Таким образом, можно использовать его с большими базами данных. Не забывайте индексы. Прием: сделайте phoneNo уникальный, и использование "игнорируют".

drop table if exists bkPhone_template;
create table bkPhone_template (
         phoneNo varchar(20),
         firstName varchar(20),
         lastName varchar(20)
 );

insert into bkPhone_template values('0783313780','Brady','Kelly');
 insert into bkPhone_template values('0845319792','Mark','Smith');
 insert into bkPhone_template values('0834976958','Bill','Jones');
 insert into bkPhone_template values('0845319792','Mark','Smith');
 insert into bkPhone_template values('0828329792','Mickey','Mouse');
 insert into bkPhone_template values('0834976958','Bill','Jones');

drop table if exists bkPhone;
create table bkPhone like bkPhone_template;
alter table bkPhone add unique (phoneNo);

insert  ignore into bkPhone (phoneNo,firstName,lastName) select phoneNo,firstName,lastName from bkPhone_template;

drop table bkPhone_template;

Если таблица данных уже существует, то только необходимо работать, создать выбор таблицы с помощью следующего вставляют, игнорируют выбор. В конце необходимо выполнить некоторые операторы переименования таблицы.Это все.

Это обходное решение очень, намного быстрее затем удалить операция.

14
ответ дан 6 December 2019 в 08:17
поделиться

Можно выбрать уникальные:

select distinct(phoneNo) from bkPhone

и помещенный их в другую таблицу, удалите старую таблицу и переименуйте новую к старому названию.

5
ответ дан 6 December 2019 в 08:17
поделиться
1
ответ дан 6 December 2019 в 08:17
поделиться

MySQL жалуется, потому что он не имеет никакого смысла. Вы пытающийся к совокупному использованию min() столбец, которым Вы группируетесь.

Теперь, при попытке удалить дублирующиеся номера телефона для того же человека, SQL должен быть:

delete from bkPhone
 where phoneId not in
 (
         select min(phoneId)
         from bkPhone
         group by firstName,lastName /* i.e. grouping by person and NOT grouping by phoneId */
         having  count(*) >= 1
 )
2
ответ дан 6 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: