Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
ВнизВыбор всех чсловых значений которых нет в таблице... Найти похожие ветки
← →
Vick (2003-02-03 12:59) [0]Доброго всем утра. Может кто подскажет как решить проблему такого плана: есть таблица
A B C
-------
1 1 1
2 a c
3 s b
4 r s
6 g g
7 f d
9 s a
10 d e
в поле А есть пропущенные номера, вот их нужно каим-то образом отлавливать запросом и находить минимальный. Как это сделать?
← →
stone (2003-02-03 13:04) [1]Только проехать курсором, получив временную таблицу с отсутствующими номерами, а уж из нее потом выбирай что хочешь.
← →
Vick (2003-02-03 13:18) [2]А без курсора никак нельзя???
← →
stone (2003-02-03 13:29) [3]Можно и так, но это в принципе то же самое
declare
@Min integer,
@Max integer
create table #TmpTable(MyField integer)
set @Min=1 (или 0, смотря что надо)
set @Max = select Max(A) from ТвояТаблица
while @Min<>@Max
begin
if not exists(select A from ТвояТаблица where A=@Min)
insert into #TmpTable(MyField) values(@Min)
end
select min(MyField) from #TmpTable
.... ну и т.д.
← →
Vick (2003-02-03 13:47) [4]Ага, спасибо, получилось :)))))
← →
stone (2003-02-03 13:54) [5]На самом деле все зависит от цели. Если нужно найти просто первое пропущенное значение, то нет необходимости во временной таблице.
declare
@Min integer,
set @Min=1 (или 0, смотря что надо)
while exists(select A from ТвояТаблица where A=@Min)
begin
set @Min=@Min+1
end
select @Min
← →
MOA (2003-02-03 14:00) [6]Например, так:
SELECT MIN(t.A) from t AS t WHERE NOT EXISTS (SELECT * FROM t AS t1 WHERE t1.A=t.A)
Удачи!
← →
MOA (2003-02-03 14:03) [7]Ошибся, прошу прощения...
← →
Владислав (2003-02-03 14:04) [8]select top 1 t1.A + 1
from table1 t1
where not exists(
select *
from table1 t2, table1 t3
where t2.A = t3.A - 1
and t1.A = t2.A
)
order by t1.A
← →
MOA (2003-02-03 14:07) [9]Вот так:
SELECT MIN(t.A+1) from t AS t WHERE NOT EXISTS (SELECT * FROM t AS t1 WHERE t1.A=(t.A+1))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c