Как убрать дубликаты строк в mysql?

Пользователь

от krista , в категории: SQL , 3 года назад

Как убрать дубликаты строк в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от otha_marks , 3 года назад

@krista Чтобы найти дупликаты строк в таблице Вы можете использовать Having с Count > 1, например запрос покажет дупликаты строк:


1
2
3
4
5
6
7
8
SELECT 
    email, COUNT(email)
FROM
    users
GROUP BY 
    email
HAVING 
    COUNT(email) > 1;


Чтобы удалить дупликаты строк из таблицы можете использовать Join с этой же таблицей, например:


1
2
3
4
5
DELETE t1 FROM users t1
INNER JOIN users t2 
WHERE 
    t1.id < t2.id AND 
    t1.email = t2.email;

Пользователь

от gage , 2 года назад

@krista 

Для удаления дубликатов строк в MySQL можно использовать запрос SELECT DISTINCT:

1
2
SELECT DISTINCT column1, column2, ...
FROM table_name;


Этот запрос выберет только уникальные строки из таблицы. Если нужно удалить дубликаты, используйте следующий запрос:

1
2
3
4
5
6
DELETE FROM table_name
WHERE id NOT IN (
    SELECT MIN(id)
    FROM table_name
    GROUP BY column1, column2, ...
);


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


Не забудьте вместо table_name указать имя таблицы и вместо column1, column2, ... указать колонки, по которым нужно искать дубликаты.