首页 新闻 赞助 找找看

请教一个sql语句的写法,关于用本表的字段值更新本表的字段

0
悬赏园豆:10 [已解决问题] 解决于 2010-10-23 02:31

请教一句sql语句:

tableA
序号   值
---------
1     AA
2     BB
3     CC
4     2
5     1
--------
我想变成的结果是下面这样子,也就是说4和5根据值字段的数去拿序号1和2的值来update自己,这个update语句要怎么写呢?

tableA
序号   值
---------
1     AA
2     BB
3     CC
4     BB
5     AA

与卡的主页 与卡 | 初学一级 | 园豆:58
提问于:2010-10-21 15:04
< >
分享
最佳答案
0

自已看吧,我写了个示例

我已经测试成功了,关键点就是自连接

drop table tb

create table tb (
序号 int,
值 varchar(10)
)

insert tb
select 1,'AA' union all
select 2,'BB' union all
select 3,'CC' union all
select 4,'2' union all
select 5,'1'


select *
from tb


update a
set a.值=b.值
from tb a left join tb b on (a.值=rtrim(cast(b.序号 as varchar)))
where b.序号 is not null

select *
from tb

收获园豆:3
浮沙筑高台 | 菜鸟二级 |园豆:223 | 2010-10-21 15:38
其他回答(3)
0

select  tablea.序号,t.值  from  tablea left join tablea t on tablea.序号=t.值

收获园豆:1
茂茂 | 园豆:2892 (老鸟四级) | 2010-10-21 15:09
是update哦
支持(0) 反对(0) 与卡 | 园豆:58 (初学一级) | 2010-10-21 15:11
0

update _table set _value=(select top 1 _value from _table as a where a.number=_value)

 

收获园豆:3
写代码的小2B | 园豆:4371 (老鸟四级) | 2010-10-21 15:11
这个也行
支持(0) 反对(0) 与卡 | 园豆:58 (初学一级) | 2010-10-23 02:32
0

序号:ID,值:NAME

用的是sqlite数据库,没有top 1

update tableA set NAME=

(select bNAME from (select a.ID as aID, b.NAME as bNAME from tableA a left join tableA b on a.NAME=b.ID where b.NAME<>'' ) 

where aID = ID)where ID in (select a.ID as aID from tableA a left join tableA b on a.NAME=b.ID where b.NAME<>'' )

收获园豆:3
wang_yb | 园豆:4891 (老鸟四级) | 2010-10-21 15:38
这个比较复杂
支持(0) 反对(0) 与卡 | 园豆:58 (初学一级) | 2010-10-23 02:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册