2015-07-06 3 views
0

Я работаю над некоторым устаревшим кодом/базой данных и вам нужно добавить поле в базу данных, которое будет записывать порядковый номер, относящийся к этому (чуждому) id.Добавить последовательность с тем же идентификатором mysql

таблицы Примера продукта (ток):

PRODUCT_ID some_stuff 
1   ... 
1   ... 
1   ... 
2   ... 
2   ... 
1   ... 

нет автоматического приращения для таблицы продукта.

мне нужно добавить столбец sequenceid Инкремент отдельно для каждой учетной записи, достижения:

product_id SEQ  another_stuff 
1   1  ... 
1   2  ... 
1   3  ... 
2   1  ... 
2   2  ... 
1   4  ... 

последовательность связана с PRODUCT_ID.

Есть ли способ, которым я могу заставить его работать?

+0

И вам это нужно? И что вы пытались достичь этого? –

+0

@ b0s3 привет. Я попробовал INSERT INTO temp_pic (id, seq) SELECT product_id, (SELECT count (*) + 1 FROM product c WHERE c.product_id = product.product_id) как seq FROM product; , но im получение такой же последовательности для идентичного идентификатора продукта – ssuhat

+0

Не получается ошибка с запросом? –

ответ

0

Start, добавив столбец:

alter table add column seq int; 

Затем вы можете сделать это с помощью переменных:

set @rn = 0; 
set @p = -1; 

update products p 
    set seq = (@rn := if(@p = product_id, @rn + 1, 
         if(@p := product_id, 1, 1) 
         ) 
      ) 
    order by product_id; 

Обратите внимание, что вы не имеете никакого контроля над упорядочением строк, потому что вы не похоже, есть поле, в котором говорится, какая строка должна быть первой.

+0

работает как шарм. это новое для меня использование переменных. Благодарю. узнают об этом подробнее. нужно 5 минут, прежде чем я смогу принять ответ. :п – ssuhat

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