MySQL Как для каждой группы повторяющихся значений в столбце таблицы задать свой ID?
Здравствуйте! Есть, к примеру, таблица Mail c письмами. Каждое письмо уникально, но некоторые могут иметь одного и того же адресата в столбце email (столбец email_id пустой): id________email________subject_____email_id
1_____a@email.com__some text
2_____b@email.com__some text
3_____b@email.com__some text
4_____a@email.com__some text
5_____c@email.com__some text
6_____c@email.com__some text
Я группирую письма по адресату при помощи GROUP BY email и получаю, например, 3 группы адресатов:
email
a@email.com
b@email.com
c@email.com
ТЕПЕРЬ ЗАДАЧА:
Нужно, чтобы каждой группе в столбце email_id был присвоен свой ID.
Примерно так: id________email________subject_____email_id
1_____a@email.com__some text______1
2_____b@email.com__some text______2
3_____b@email.com__some text______2
4_____a@email.com__some text______1
5_____c@email.com__some text______3
6_____c@email.com__some text______3
Возможно ли это сделать работая только с этой таблицей и как?
SET @p := 0;
UPDATE mail
LEFT JOIN (
SELECT
email, (@p := @p + 1) AS gn
FROM
mail
GROUP BY email
) AS m ON m.email = mail.email
SET email.email_id = m.gn
но рекомендую прислушаться к oxidmod , а то сейчас у Вас структура хранения данных не вообще не камельфо
Спасибо, действительно нужно делать отдельную таблицу а в таблице с письмами хранить индексы из связанной таблицы. Хотел сам себя обхитрить), но нужно делать как вы говорите