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

    @VitalyChaikin
    DELETE FROM guild_users gu 
    INNER JOIN (
    SELECT <Список полей по которым определяется дубль>, COUNT(*)
    FROM guild_users
    GROUP BY <Список полей по которым определяется дубль>
    HAVING COUNT(*) > 1) guDubles on 
    guDubles.Поле1 = gu.Поле1 AND
    guDubles.Поле2 = gu.Поле2 AND ...  <Список полей по которым определяется дубль>
    Ответ написан
    Комментировать
  • Как удалить дубликаты в таблице MySQL?

    @mletov
    1) Добавьте поле id, неудобно же без уникального идентификатора работать
    2) Версия MySql должна быть достаточно свежей и поддерживать оконный функции

    Предварительно забэкапьтесь

    DELETE FROM guild_users
    WHERE id
    NOT IN
    (
    	SELECT id
    	FROM
    	(
    		SELECT id,
    			   ROW_NUMBER(PARTITION BY user_id, user_money, user_description, user_xp, lastMessage, user_warns, user_warn_reasons, user_private_role, user_exception, Time, strTime, startTime, endTime, user_timelvl, user_timexp ORDER BY user_lvl DESC) AS rn
    		FROM guild_users
    	) AS t1
    	WHERE rn = 1
    )
    Ответ написан
    3 комментария