Здравствуйте, terma, Вы писали:
T>Добрый день!
T>Была на собеседование и задали мне вопрос:
T>есть таблица t одно поле id Значения в поле:1,2,3,5,6,etc.
T>Необходимо написать запрос, который найдет первую дырку(т.е. пропущенное 4), причем не использовать курсоры и поле не identity(просто по identity есть пример в help)
T>Как это сделать не знаю ?
T>помогите мне
T>А то чувствую себя просто опущенной
не надо расстраиваться по таким пустякам, вот как бы я решил эту задачку:
итак есть таблица t со значениями в поле id: 1,2,3,5,6,8,
а вот после такого запроса мы увидим список дыр
select id+1 from t where id not in(select id-1 from t) order by id
результат: 4,7,9. С таким же успехом можно выполнить такой запрос (он вроде как быстрей должен обрабатываться):
select id+1 from t t1 where id+1 not in(select t2.id from t t2 where t2.id>t1.id) order by id
[code]
если вам только одно значение надо (первое) то добавьте TOP 1:
[code]
select TOP 1 id+1 from t where id not in(select id-1 from t) order by id
результат: 4
С уважением, kadalex