@schwabsergey

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
Возможно ли это сделать работая только с этой таблицей и как?
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
как-то так
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 , а то сейчас у Вас структура хранения данных не вообще не камельфо
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@schwabsergey Автор вопроса
Спасибо, действительно нужно делать отдельную таблицу а в таблице с письмами хранить индексы из связанной таблицы. Хотел сам себя обхитрить), но нужно делать как вы говорите
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы