Заменить значения в диапазоне строк

anadikt

Гуру форума
Регистрация
28 Янв 2010
Сообщения
433
Реакции
86
Всем привет, подскажите, может кто знает как заменить содержимое столбца id начиная с 15 строки на последовательность цифр ?
 
Что скрывается под фразой "последовательность цифр"?

Возможно подойдёт запрос:
Код:
UPDATE `table` SET  `id` = `id` + 100 WHERE `id` > 15
 
Для перенумерации с 15 строки
Код:
SET @t=14;
UPDATE `table` SET `id` = (@t := @t + 1) WHERE `id` >= 15;
 
сейчас id идут: 1,2,3,4,5, 700,701 и т.д., а надо сделать поочередно ...5,6,7,8 и т.д. как то так
Тогда нужно убрать праймари_кей у столбца, и прогнав через цикл присвоить полю $i++;
 
удалив строки ненужные нумерация идет не с 1,2,3,4,5...и так далее и продолжает с последней записи ID ... типа 1,2,3,5,6,700,701 ... можно как то сделать, чтобы они продолжали с 7 если удалить все после id 7?
 
удалив строки ненужные нумерация идет не с 1,2,3,4,5...и так далее и продолжает с последней записи ID ... типа 1,2,3,5,6,700,701 ... можно как то сделать, чтобы они продолжали с 7 если удалить все после id 7?
База данных запоминает что было место использовано. Нужно удалить таблицу и создать заново. Тогда получится последовательность продолжить с 7
 
Только решение с удалением таблицы или её alter, актуально в том случае если id используются только в этой таблице, иначе придётся писать обработчик, который находит пропуск и для каждого пропуска заменит id записи для всех логически связанных таблиц.

Для второго случая может помочь запрос:
Код:
SELECT (`t1`.`phone`+1) as `empty_phone`
FROM `t1`
WHERE (
	SELECT 1 FROM `t1` as `st` WHERE `st`.`phone` = (`t1`.`phone` + 1)
) IS NULL
ORDER BY `t1`.`phone`
LIMIT 1
найден тут Для просмотра ссылки Войди или Зарегистрируйся
 
Код:
SELECT MAX(id) + 1 FROM `table`; -- получаем значение, например 1234
ALTER TABLE `table` AUTO_INCREMENT = 1234; -- ставим новый счетчик
 
Назад
Сверху