2012-09-16 2 views
0

У меня есть одна таблицаUPDATE цв на основе GROUP BY

id | title | ... 
––---------------- 
1 | test A | ... 
2 | test C | ... 
3 | test B | ... 
4 | test C | ... 
5 | test B | ... 
6 | test X | ... 

И я хочу, чтобы добавить столбец, основанный на запросе GROUP BY: SELECT * FROM table GROUP BY title

id | title | group_id (int) 
––-------------------------- 
1 | test A | 1 
2 | test C | 2 
3 | test B | 3 
4 | test C | 2 
5 | test B | 3 
6 | test X | 4 

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

Как это сделать?

Спасибо.

PS: Извините за мой английский, я французский.

+2

If "*' group_id' не должен быть значительным *", почему не' UPDATE таблица SET group_id = title'? – eggyal

+0

'group_id' должен быть int – aLt

+0

Почему? Если он проиндексирован, что получается от его незначительного целого? – eggyal

ответ

1

Ну, дайте вам изменить таблицу и добавить новый столбец ParentID? Что-то вроде

UPDATE ATable t 
    INNER JOIN (
    SELECT 
     Title, 
     MIN(ID) AS ID 
    FROM ATable 
    GROUP BY Title 
) m ON t.Title = m.Title 
SET t.ParentID = m.ID 
+0

Спасибо, это отлично! – aLt

Смежные вопросы