powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Профи помогите с запросом !!!
5 сообщений из 5, страница 1 из 1
Профи помогите с запросом !!!
    #32021687
Serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некая таблица Customer, в которой существует некоторое
целочисленное поле ID, служащее первичным ключем. В процессе работы в
таблицу добавляются и удаляются записи. После удаления возникают так
называемые дырки (к примеру 1,2,4,5,7,...). Необходимо одним запросом найти
любую дырку.
...
Рейтинг: 0 / 0
Профи помогите с запросом !!!
    #32021692
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то это старинный спор - естественные ключи против сурогатных, но в вашем случае IMHO если у вас поле является первичным ключом, то какая разница, какое значение оно имеет. Если же поле несет еще какую-то смысловую нагрузку(номер клиента ?), то может это все-таки не первичный ключ.

В любом случае


create table #temp1(f1 int)

insert into #temp1 values(1)
insert into #temp1 values(2)
insert into #temp1 values(4)
insert into #temp1 values(5)
insert into #temp1 values(7)
insert into #temp1 values(8 )
insert into #temp1 values(10)

/*Это все "пробелы в нумерации" */
select a.f1+1
from #temp1 a
left outer join #temp1 b on b.f1 = (a.f1+1)
where b.f1 is null

/*Это наименьший "пробел в нумерации" */
select top 1 a.f1+1
from #temp1 a
left outer join #temp1 b on b.f1 = (a.f1+1)
where b.f1 is null
order by a.f1

drop table #temp1
...
Рейтинг: 0 / 0
Профи помогите с запросом !!!
    #32021693
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Профи помогите с запросом !!!
    #32021888
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, запрос каторый якобы должен вернуть все дыры, не всегда вернет их все и не всегда правильно.
например, если в таблице есть одна запись со значением fl=100
...
Рейтинг: 0 / 0
Профи помогите с запросом !!!
    #32021892
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2nick
Правильное замечание



create table #temp1(f1 int)

insert into #temp1 values(1)
insert into #temp1 values(2)
insert into #temp1 values(4)
insert into #temp1 values(5)
insert into #temp1 values(7)
insert into #temp1 values(8 )
insert into #temp1 values(10)

/*Это все "пробелы в нумерации" */
select a.f1+1
from (select f1 from #temp1 union all select 0 as f1) a
left outer join #temp1 b on b.f1 = (a.f1+1)
where b.f1 is null
order by a.f1

/*Это наименьший "пробел в нумерации" */
select top 1 a.f1+1
from (select f1 from #temp1 union all select 0 as f1) a
left outer join #temp1 b on b.f1 = (a.f1+1)
where b.f1 is null
order by a.f1

drop table #temp1


Хотя т.к. поле ID "целочисленное" (int ?), то теоритически нумерация могла начинаться и с отрицательного числа.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Профи помогите с запросом !!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]