Автоинкремент вручную колонки MySQL - PullRequest
0 голосов
/ 15 октября 2011

У меня есть таблица со столбцами:

[id,name,public_id]

на самом деле таблица содержит

[1,john,0]
[2,sara,0]
[3,jack,0]
.....

Я хочу изменить третий столбец на 1050,1051,1052 ....

[1,john,1050]
[2,sara,1051]
[3,jack,1052]
.....

Как мне сделать это обновление?

Некоторые соображения: Публичный идентификатор должен быть больше 1049 и должен быть последовательным.Например, для 100 строк public_id должен быть [1050 .... 1149]

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 15 октября 2011

Вы можете сделать обновление следующим образом:

UPDATE table SET public_id = id + 1049

При этом вы используете идентификатор и добавляете к нему 1049, чтобы получить нужный вам результат

1 голос
/ 15 октября 2011

Предполагая, что имя вашей таблицы - TEST_TABLE, этот синтаксис MySQL обновит PUBLIC_ID с последовательными значениями, начиная с 1500 (и в порядке ID):

REPLACE INTO TEST_TABLE
SELECT TEST_TABLE.ID, TEST_TABLE.NAME, @ROWNUM := @ROWNUM + 1
FROM
    TEST_TABLE,
    (SELECT @rownum := 1499) R
ORDER BY ID

Простым английским языком:

  • Для каждой строки определите ее порядок при сортировке данных по идентификатору.Назовите этот порядок «ROWNUM».
  • Поместите ROWNUM (+ начальное смещение) обратно в таблицу вместо исходного PUBLIC_ID.

ПРЕДУПРЕЖДЕНИЕ: Согласно Документация MySQL , REPLACE фактически удалит дублированную строку, прежде чем вставлять ее снова (вместо простого обновления измененных полей), что может быть проблемой при наличии внешних ключей.

( Не уверен насчет SQLite, ноЯ предполагаю, что вы могли бы использовать аналогичную общую идею. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...