Установить итерационные значения в строках таблицы - PullRequest
1 голос
/ 15 июня 2011

У меня есть следующая таблица

id name address empid

1  AA   aa      0
2  BB   bb      0
3  CC   cc      0

Мне нужно написать запрос для установки empid, начиная с 1. Как написать это, пожалуйста. Должен ли я использовать хранимую процедуру для этого или могу сделать это с помощью обычного запроса?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 15 июня 2011

Вот способ сделать это, используя довольно неясный оператор присваивания в MySQL .Это решение не будет пропускать числа в случае пропусков в последовательности первичных ключей, как в некоторых других решениях.

0 голосов
/ 15 июня 2011

Как подсказал @BiggsTRC, вы можете использовать id для установки empid. Если нет, вы можете создать хранимую процедуру или некоторый код PHP для этого. Если ваш идентификатор не является полем «Автоинкремент», вы можете рассматривать новый столбец как поле автоинкремента и назначить это значение emp с помощью запроса на обновление, а затем удалить этот новый столбец. (Это несколько альтернатив, вам нужно выбрать лучший)

0 голосов
/ 15 июня 2011
          UPDATE `test` SET `empid`=`id`

Но зачем вам это делать?Это в значительной степени определение избыточности.

0 голосов
/ 15 июня 2011

Если вы хотите поместить 1 в empid для первой строки, 2 для второй и т. Д., Самый простой способ - использовать поле id, которое уже делает это, так:

UPDATE table
SET empid = id

Единственное, о чем вам нужно беспокоиться, это пропустить числа в столбце id. Если это будет проблемой, и вы пропустите идентификационные номера, вам придется использовать другой метод. Для этого вам нужно сделать что-то вроде этого:

DECLARE @counter int
SET @counter = 1
UPDATE table
SET @counter = empid = @counter + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...