Вниз
Скачать: CL | DM;

Выбор всех чсловых значений которых нет в таблице...   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
1-63662
Goffman
2003-02-10 07:21
2003.02.20
Frame&dll


4-63902
nsvi
2003-01-09 15:13
2003.02.20
Как получить список доступных фонтов?


14-63792
Tio
2003-02-02 23:17
2003.02.20
Windows 2000 и интернет


6-63703
Mischka
2002-12-17 14:49
2003.02.20
LAN tracert 192.168.14.133


6-63717
Власяня
2002-12-26 21:41
2003.02.20
Удалённый доступ




   Наверх