2011-12-18 4 views
1

я нашел метод для обновления строк таблицы с последовательными номерами здесь:Обновление SQL с последовательной нумерации в пределах группы

Update SQL with consecutive numbering

Суть метода состоит в использовании (T-SQL):

update myTable 
SET @myvar = myField = @myVar + 1 

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

Может ли этот метод быть расширен до числа различных групп записей, причем каждая группа начинается с 1? например

  • Категория 1 строки должны получить порядковый номер 1,2,3, ....
  • Категории 2 строки должна также получить порядковый номер 1,2,3, .....
+5

Там же [ответ вы хотите] (http://stackoverflow.com/a/1168075/11683) в вопросе вы ссылку. Посмотрите последний ** EDIT **. – GSerg

+0

Обычно лучше, если вы можете сгенерировать последовательность после факта, всегда генерировать ее во время выбора, а не хранить последовательности. Таким образом, вам не нужно выполнять задачи обслуживания (например, закрытие пробелов во время удаления или изменение значений из-за обновлений) –

+0

возможный дубликат [Обновить SQL с последовательной нумерацией] (http://stackoverflow.com/questions/ 1167885/update-sql-with-sequence-numbering) – gbn

ответ

-1

Вы можете просто добавить предложение WHERE в ваш оператор UPDATE. см. http://dev.mysql.com/doc/refman/5.0/en/update.html для справки.

В основном вы делаете что-то вроде:

update myTable 
SET @myvar = myField = @myVar + 1 
WHERE myCategory = 'CAT' 
+0

Нет, он хочет, чтобы каждая группа (категория) получала свою собственную последовательность. –

+0

Затем вам нужно перебрать каждую категорию и повторно инициализировать счетчик в каждом цикле цикла. – simonecampora

+0

См. Ссылку в комментариях (по GSerg), которая делает это в одном запросе. –

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