mysql: Заполнить таблицу по порядку для каждого подмножества

mfl
На сайте с 16.10.2006
Offline
134
mfl
1602

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

Есть таблица:

CREATE TABLE `t1` (

`id` int NOT NULL,
`c1` int NOT NULL,
`c2` int NOT NULL,
`time` timestamp NOT NULL,
PRIMARY KEY ( `id` ),
KEY ( `c1`, `c2`)
) ENGINE = InnoDB;

Необходимо заполнить поле с2 по порядку для каждого подмножества с1, отсортировав по time

т.е. должно получится следующее:

SELECT * FROM `t1` ORDER BY `c1` ASC, `c2` ASC;


id c1 c2 time
------ ------ ------ ------
- 1 1 5
- 1 2 21
- 1 3 23
- 1 4 35
- 2 1 2
- 2 2 50
- 3 1 6
- 3 2 10
- 3 3 20

Средствами MySQL это можно реализовать?

Спасибо.

G
На сайте с 16.07.2012
Offline
2
#1

то есть у тебя типо не заполнено изначально столбец c2? типо его надо заполнить?

---------- Добавлено 08.08.2012 в 01:37 ----------

просто вопрос не понятный. ты пишешь что надо заполнить c2 а в итоге у тебя заполнено уже поле и ты по нему сортируешь. но дальше пишель что надо сортровать по time в а запросто sql его нету)) попробуй более точно обрисовать задачу)

mfl
На сайте с 16.10.2006
Offline
134
mfl
#2
то есть у тебя типо не заполнено изначально столбец c2? типо его надо заполнить?

типо да.

Изначально в таблице c2=0. Необходимо это поле заполнить так, чтобы после запроса SELECT * FROM t1 ORDER BY c1, time получился результат:

id c1 c2 time
------ ------ ------ ------
- 1 1 5
- 1 2 21
- 1 3 23
- 1 4 35
- 2 1 2
- 2 2 50
- 3 1 6
- 3 2 10
- 3 3 20

minor
На сайте с 04.10.2010
Offline
70
#3

Я тоже чето не особо понял смысл=)

Если нужно что бы в столбец c2 записывалось число (счетчик) в зависимости от сортировки id и time, то это лучше сделать в коде (пхп у вас скорее всего) перед записью на мой взгляд.

PHP experience 2 year, comprehend seo
mfl
На сайте с 16.10.2006
Offline
134
mfl
#4

minor, спасибо за ответ. Изначально, в таблице столбца с2 не существовало.

Интересует сама возможность заполнить этот столбец без запросов в цикле.

На Myisam это решается элементарно, путем сортировки таблицы и установки атрибута auto_increment

На InnoDB сортировку таблицы не сделать.

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