Итак, у меня есть существующая таблица пользователей MySQL с тысячами записей в ней.Я заметил дубликаты записей для пользователей, что является проблемой, которую мне нужно решить.Я знаю, что мне нужно как-то сделать 2 столбца уникальными.
Дубликаты возникают с записями, содержащими как один и тот же столбец server_id , так и один и тот же user_id столбец.Эти 2 столбца предназначены для уникальной комбинации.Так что должно быть только 1 user_id на server_id .
Я выяснил, как найти эти дубликаты, используя следующий запрос:
SELECT `server_id`, `user_id`, COUNT(*) AS `duplicates` FROM `guild_users` GROUP BY `server_id`, `user_id` HAVING `duplicates` > 1
Из того, что я прочитал, мне нужно сначала удалить все дубликаты, прежде чем добавлять какие-либо ограничения.Это одна из тех вещей, в которых я не уверен.
Вопрос 1: Как бы я удалил все дубликаты, но оставив 1 из каждого, так что пользователь все еще существует, но не другой?дубликаты.
Вопрос 2: Каков наилучший способ избежать создания дубликатов?Должен ли я создать уникальное ограничение для обоих столбцов или сделать что-то с первичными ключами вместо этого?