简单的sql查询问题
发布网友
发布时间:2022-04-10 16:49
我来回答
共5个回答
热心网友
时间:2022-04-10 18:18
declare @a int,@b int,@c varchar(50)
set @a=1
set @b=1
set @c='没有的ID为:'
while @a<=(select max(id) from t)
begin
if exists(select * from t where id=@a)
begin
set @a=@a+1
end
else
begin
set @c=@c+convert(varchar(2),@a)+','
set @a=@a+1
end
end
print @c
已经测试`附上测试图片`按你效果做的`希望对你有所帮助
热心网友
时间:2022-04-10 19:36
select *
from 表
where id not in (select id from 表)
热心网友
时间:2022-04-10 21:11
create table #t (id int)
declare @num int
set @num=1
while @num<(select max(id) from 表)
begin
insert into #t values(@num)
set @num=@num+1
end
select #t.id
from #t
left join 表
on #t.id=表.id
where 表.id is null
热心网友
时间:2022-04-10 23:02
从题目上看,ID必然是关键字段,ID缺少即记录就不存在,你怎么查?楼上的答案的结果肯定是空记录集。作者的意思是不是说,想查询一下ID编号里有哪些编号是没有使用的?如果这是样的话,一个简单的查询就不可能做到了。
你加一个listbox,
query1.sql.text:='select id from 表';
query1.open;
x:=0;//假定ID从1开始
while not query1.eof do
begin
inc(x);
if query1['id']<>x then
listbox1.items.add(inttostr(x));
query1.next;
end;
这样,listbox保存的,就是没有使用的ID号
热心网友
时间:2022-04-11 01:10
--完整的测试代码
select *
into ##
from (
select 1 as 'id', 'aa' as 'name'
union all
select 2, 'bb'
union all
select 4, 'cc'
union all
select 7, 'dd'
) a
create table #t (id int)
declare @num int
set @num=1
while @num<(select max(id) from ##)
begin
insert into #t values(@num)
set @num=@num+1
end
select *
from #t
where #t.id not in (select [id] from ##)