高手快来看 这个SQL语句怎么写 问题一解决就结贴

hglwy 2005-09-13 01:43:16
有表:
id classid name fid
1 16 a 0
2 25 b 0
3 14 c 11
4 13 d 11
5 12 e 13
6 11 f 14

现在需要把它变为:

id classid name fid
1 1 a 0
2 2 b 0
3 3 c 1
4 4 d 1
5 5 e 3
6 6 f 4

也就是说 把classid 变的和id一样 但fid 也要随着classid一起变过来
并且fid为0的不变 不知说清楚没有
...全文
52 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hglwy 2005-09-13
多谢各位 尤其是libin_ftsafe(子陌红尘)真不知道我什么时候SQL编写能力才能象libin_ftsafe(子陌红尘)一样 还得踏踏实实的努力学
马上结贴
回复
子陌红尘 2005-09-13
--生成测试数据
create table #t(id int,classid int,name char(1),fid int)
insert into #t select 1,16,'a',0
insert into #t select 2,25,'b',0
insert into #t select 3,14,'c',11
insert into #t select 4,13,'d',11
insert into #t select 5,12,'e',13
insert into #t select 6,11,'f',14


--执行更新操作
update
a
set
classid = id,
fid = isnull((select id from #t where classid=a.fid),0)
from
#t a


--查看更新结果
select * from #t
--输出
/*
id classid name fid
--- --------- ------ -----
1 1 a 0
2 2 b 0
3 3 c 6
4 4 d 6
5 5 e 4
6 6 f 3
*/
回复
rivery 2005-09-13
update a
set classid=id,
fid=(select fid from tablename where id=a.id and classid=a.classid)
from tablename a
where a.fid<>0
回复
子陌红尘 2005-09-13
update
a
set
classid = id,
fid = (select isnull(id,0)) from 表 where classid=a.fid)
from
表 a
回复
good2speed 2005-09-13
UPDATE table set classid = id

DECALRE @fid int
SELECT @fid = MIN(fid) - 1 FROM table WHERE fid <> 0

UPDATE table SET fid = fid - @fid
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2005-09-13 01:43
社区公告
暂无公告