Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

поиск наименьшего свободного id

5.4K
30 декабря 2008 года
cursor
114 / / 05.01.2008
Здравствуйте
Такая задача. В таблицу добавляются записи. Некоторые записи со временем удаляются
У каждой записи есть id. id вводится вручную (т.е. не автоинкремент). Необходимо чтобы скрипт php предлагал наименьшее свободное значение id. Подскажите более оптимизированный алгоритм
Сам использую сначала запрос select id order by id desc limit 1 потом select id order by id asc limit 1
а потом в цикле проверяю есть ли свободные id в существующем диапазоне: select * where id=$i
Заранее спасибо
1
30 декабря 2008 года
kot_
7.3K / / 20.01.2000
Хм. Как увас это сложно.
Так как времени ообо нет - посмотрите на sql.ru. Это достаточно частая операция и я думаю что вы сможете найти готовое решение под свою базу, которую вы кстати указать не соизволили.
11
30 декабря 2008 года
oxotnik333
2.9K / / 03.08.2007
можно не ходить так далеко, здесь есть подобное, останется только доработать напильником (вычленить минимальное значение)
8.2K
30 декабря 2008 года
Ora-cool
211 / / 20.09.2007
Не совсем то, что нужно, но почти:

 
Код:
select min(t.id) from t where t.id not in(
select t1.id from
  (select t.id id from t) t1,
  (select t.id id from t) t2
where t1.id = t2.id + 1 or t2.id = t1.id + 1
)


Находит минимальный id, перед которорым есть пропуск нумерации.

P.S. Если это делается, чтобы заполнить промежутки в нумерации id-шников, то это довольно порочная практика, особенно в многопользовательских системах.
554
15 января 2009 года
Zhilin Mike
159 / / 11.02.2003
select level as val from dual connect by level < #max_value#
minus
select id as val from t

Вот все ваши дырки... выбирайте любую =)
8.2K
15 января 2009 года
Ora-cool
211 / / 20.09.2007
Цитата: Zhilin Mike
select level as val from dual connect by level < #max_value#
minus
select id as val from t

Вот все ваши дырки... выбирайте любую =)


Ага, только что-то мне подсказывает, что у автора совсем даже не Oracle :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог