Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Профи помогите с запросом !!!
|
|||
|---|---|---|---|
|
#18+
Есть некая таблица Customer, в которой существует некоторое целочисленное поле ID, служащее первичным ключем. В процессе работы в таблицу добавляются и удаляются записи. После удаления возникают так называемые дырки (к примеру 1,2,4,5,7,...). Необходимо одним запросом найти любую дырку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 03:18 |
|
||
|
Профи помогите с запросом !!!
|
|||
|---|---|---|---|
|
#18+
Вообще-то это старинный спор - естественные ключи против сурогатных, но в вашем случае 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 07:08 |
|
||
|
Профи помогите с запросом !!!
|
|||
|---|---|---|---|
|
#18+
Почитайте, если интересно http://www.sql.ru/articles/article.php?id=182 http://www.sql.ru/articles/article.php?id=362 http://www.sql.ru/articles/article.php?id=364 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 07:11 |
|
||
|
Профи помогите с запросом !!!
|
|||
|---|---|---|---|
|
#18+
Кстати, запрос каторый якобы должен вернуть все дыры, не всегда вернет их все и не всегда правильно. например, если в таблице есть одна запись со значением fl=100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2002, 10:09 |
|
||
|
Профи помогите с запросом !!!
|
|||
|---|---|---|---|
|
#18+
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 ?), то теоритически нумерация могла начинаться и с отрицательного числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2002, 10:29 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3510&tid=1824120]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 309ms |

| 0 / 0 |
