收录日期:2018/12/13 08:13:17 时间:2016/05/27 12:53:24 标签:基础类
Fid  Fname
1    A
2    B
3    C
6    F

现在要求补全Fid 即
Fid   Fname
1      A
2      B
3      C
4   
5
6      F
--直接补,这样的方式,Fid的值最大从0~10000
select Fid=b.id,Fname=isnull(Fname,'')
from 表 a right join(
select id=a.id+b.id+c.id+d.id+1
from(
select id=0 union all select 1
union all select id=2 union all select 3
union all select id=4 union all select 5
union all select id=6 union all select 7
union all select id=8 union all select 9
) a,(
select id=0 union all select 10
union all select id=20 union all select 30
union all select id=40 union all select 50
union all select id=60 union all select 70
union all select id=80 union all select 90
) b,(
select id=0 union all select 100
union all select id=200 union all select 300
union all select id=400 union all select 500
union all select id=600 union all select 700
union all select id=800 union all select 900
) c,(
select id=0 union all select 1000
union all select id=2000 union all select 3000
union all select id=4000 union all select 5000
union all select id=6000 union all select 7000
union all select id=8000 union all select 9000
) d
)b on a.fid=b.id
where b.id<=(select max(fid) from 表)
order by b.id
--测试

--测试数据
create table 表(Fid int,Fname varchar(10))
insert 表 select 1,'A'
union all select 2,'B'
union all select 3,'C'
union all select 6,'F'
go

--查询
select Fid=b.id,Fname=isnull(Fname,'')
from 表 a right join(
select id=a.id+b.id+c.id+d.id+1
from(
select id=0 union all select 1
union all select id=2 union all select 3
union all select id=4 union all select 5
union all select id=6 union all select 7
union all select id=8 union all select 9
) a,(
select id=0 union all select 10
union all select id=20 union all select 30
union all select id=40 union all select 50
union all select id=60 union all select 70
union all select id=80 union all select 90
) b,(
select id=0 union all select 100
union all select id=200 union all select 300
union all select id=400 union all select 500
union all select id=600 union all select 700
union all select id=800 union all select 900
) c,(
select id=0 union all select 1000
union all select id=2000 union all select 3000
union all select id=4000 union all select 5000
union all select id=6000 union all select 7000
union all select id=8000 union all select 9000
) d
)b on a.fid=b.id
where b.id<=(select max(fid) from 表)
order by b.id
go

--删除测试
drop table 表

/*--测试结果
Fid         Fname      
----------- ---------- 
1           A
2           B
3           C
4           
5           
6           F

(所影响的行数为 6 行)
--*/
--用临时表的方法,Fid的值不受限制
declare @i int
select @i=max(Fid) from 表
set rowcount @i
select id=identity(int,1,1),a=0 into #t from syscolumns
set @i=@i-@@rowcount
while @i>0
begin
set rowcount @i
insert #t select 0 from syscolumns
set @i=@i-@@rowcount
end

select Fid=b.id,Fname=isnull(Fname,'')
from 表 a right join #t b on a.fid=b.id
where b.id<=(select max(fid) from 表)
order by b.id
--测试

--测试数据
create table 表(Fid int,Fname varchar(10))
insert 表 select 1,'A'
union all select 2,'B'
union all select 3,'C'
union all select 6,'F'
go

--用临时表的方法,Fid的值不受限制
declare @i int
select @i=max(Fid) from 表
set rowcount @i
select id=identity(int,1,1),a=0 into #t from syscolumns
set @i=@i-@@rowcount
while @i>0
begin
set rowcount @i
insert #t select 0 from syscolumns
set @i=@i-@@rowcount
end

select Fid=b.id,Fname=isnull(Fname,'')
from 表 a right join #t b on a.fid=b.id
where b.id<=(select max(fid) from 表)
order by b.id
go

--删除测试
drop table 表

/*--测试结果
Fid         Fname      
----------- ---------- 
1           A
2           B
3           C
4           
5           
6           F

(所影响的行数为 6 行)
--*/

为何此处为空不可以? outlook改变默认帐号 windows XP操作系统可以编译perl的编译器下载 新手提问.关于输入方法名称 我的IIS到底是怎么了? 求个sql 各位帮我看一下这是什么问题啊 归档日志进行恢复的方法 elicpse为什么连不上sqlserver 2000呢 VB 拷贝大文件时进入假死状态,如何解决 在VC++中的activeX中怎么用IE调试? 到日企面试 adOpenKeyset AdOpenStatic哪个快 我们老师让我用java存储xml ,存储到postgreSQL中 如何用正则表达式判断一个字符串是另外一个字符串的的一部分 asp 分页问题诚心求教。 请教下关于ListView中复选框的问题 关于CalendarExtender日期问题? 关于给HiddenField传值 新人问弱智问题,大家别骂…… 请问怎么在vs2008 console application中添加.lib库 PB10.5调用社保接口DLL的UNICODE问题 最初级的js却不知道错在哪里了,大家来帮忙看看 vb.net中关闭页面问题 在web.config中,如何来添加bool型的参数 【0分贴】表鄙视我。再也不押宝了。攒分 9 SQL Server中的数据库的导出至另一个数据库中时,数据导过去了,但是数据表的字段的默认值却都没有指定了! java 一道笔试题目 什么控件可以中显示多帧图像 appendTitle与appendRow 方法的作用