Как сформировать запрос?

Статус
В этой теме нельзя размещать новые ответы.

Welho®

Предвестник пьянки
Регистрация
3 Дек 2007
Сообщения
853
Реакции
325
Название темы походу тупее не бывает, но все же.

есть таблица, в ней поле ID, поле содержит числовые значения.
возникла необходимость сменить эти числовые значения от текущего например на +23
то есть в поле ID значения 1,2,3,4,28,31 а поменять надо на +23 от текущего, то есть получается 24,25,26,27,51,54 и так далее массово )))
как это сделать?
 
update
set ID = ID+23
 
UPDATE TB SET ID = ID +33 ORDER BY ID DESC
Это на случай совпадения идентификаторов!
 
всё прочитал ничего не понял :bc:
Либо сними флаг unique с поля id (хотя оно, вероятно - primary key), либо воспользуйся предыдущим советом. Поясню.

По-умолчанию, мускул берет строки по-порядку, т.е, в порядке возрастания. При этом, когда он прибавляет 23 к строке с айди 1, его значение становится 24. В то же время, с достаточно большой долей вероятности, это же значение содержит строка 24. Чтобы обойти это, мы сортируем строки в процессе измениния не по возрастанию, а по убыванию от самого большого значения. Т.е., если мы к последней строке прибавим 23, то она уже не будет пересекаться с последующими строками:

UPDATE TB SET ID = ID +23 ORDER BY ID DESC
 
с какого это он потом будет ругаться, поле то будет снова уникальным
 
Так если обратно потом менять всё равно ругаться будет или данные потеряешь
Нет. У нас было миллион триллионов уникальных значений. Мы к каждому прибавили однаковое число. Получили тот же самый миллион триллионов уникальных значений, но каждое значение увеличилос.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху