Создание уникального ключа MySQL

EM
На сайте с 16.12.2005
Offline
108
637

Здравствуйте!

Есть таблица зарегистрированных пользователей. Изначально не продумана нормальнро - как результат через время вылезла проблема дублирования логинов.

Структура такая:

id (int) | login (varchar) | pass (varchar) | activation (int)

последняя колонка "activation" - отметка об активации пользователя.

в таблице:

1 | user1 | pass | 1

2 | user1 | pass | 0

3 | user2 | pass | 0

4 | user2 | pass | 1

Хочу добавить UNIQUE Key на колонку login:


ALTER IGNORE TABLE users ADD UNIQUE(login)

Проблема в том, что конструкция ALTER IGNORE оставляет только те строки, значения которых найдены первыми.

Т.е. в результате получается:

1 | user1 | pass | 1

3 | user2 | pass | 0

Можно ли каким-то образом явно указать MySQL, что при нахождении дублирующих значений в колонке приоритет - оставить ту строку, где activation=1?

I
На сайте с 23.12.2010
Offline
25
#1

удалите дубликаты через delete а не через создание индекса. буквально намедни тут тема пробегала

eStatic
На сайте с 27.05.2011
Offline
40
#2

Если одним запросом выбрать, то

SELECT * FROM (

SELECT *

FROM users

ORDER BY login ASC, activation DESC

) AS ordered_users

GROUP BY login

Надо проверить на синтаксис

---------- Добавлено 01.03.2012 в 21:49 ----------

Т.е. можно скопировать выборку в другую таблицу, эту очистить и назад перекинуть

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий