高手快来看 这个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的不变 不知说清楚没有
...全文
74 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧