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

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

Похожие вопросы