Форум: "Базы";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Вниз
Певый свободный номер в поле таблицы. Найти похожие ветки
← →
FormCoord (2003-06-27 17:04) [0]Вот собственно и весь вопрос. Дополнение: таблица большая - 76000 записей, решение хотелось бы в SQL, если это возможно...
Спасибо.
← →
NDeu (2003-06-27 17:13) [1]
> Певый свободный номер в поле таблицы
> решение хотелось бы в SQL
Нельзя
← →
Serginio (2003-06-27 17:18) [2]Есть два решения данной проблемы выборка всех номеров упорядоченных по возрастанию с поиском дырок.
Второй создание второй таблицы полностью заполненной от 0 до 7600 И Select Where not in
Может есть еще SQL варианты. Первый прекрасно подходит для локальных баз.
Варианты в Select ов цикле не расматриваю.
← →
Nikols (2003-06-27 17:22) [3]Можно! Здесь еще проверка на цифры...
SELECT codsample
FROM
(
SELECT lpad(min(codsample)+1,8,"0") codsample
FROM
(
SELECT * FROM nmatk a
WHERE substr(a.codsample,1,1) between "0" and "9"
) a
WHERE NOT EXISTS
(select 1 from nmatk c
where c.codsample = lpad(a.codsample + 1,8,"0")
)
)
← →
Zacho (2003-06-27 18:22) [4]
> Nikols © (27.06.03 17:22)
Такой запрос далеко не на всех СУБД будет работать.
А вот гораздо более простой вариант:
SELECT MIN(T1.NUM_FIELD)
FROM MY_TABLE T1
LEFT JOIN MY_TABLE T2 ON T2.NUM_FIELD=T1.NUM_FIELD+1
WHERE T2.NUM_FIELD IS NULL
По кпайней мере на IB - работает.
← →
Zacho (2003-06-27 18:24) [5]
> Zacho © (27.06.03 18:22)
Блин, немножко ошибся, правильно так:
SELECT MIN(T1.NUM_FIELD)+1
FROM MY_TABLE T1
LEFT JOIN MY_TABLE T2 ON T2.NUM_FIELD=T1.NUM_FIELD+1
WHERE T2.NUM_FIELD IS NULL
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c