日期:2014-05-17  浏览次数:20420 次

SQL里怎样更新这样的字段?(不好表达,见描述就明白了)
本帖最后由 comcyd 于 2013-03-28 23:51:17 编辑

1.有一个表A有多条数据:
A01     A02     A03    A04
--------------------------
'a1'  'A01'   '123'   'fk'
'a2'  'A01'   '456'   'fk'
...

2.然后有另一个表tb,内容是:
tb01  tb02
----------
a1    '888'
a2    '999'
...

3.表A中字段A02里的内容是字段A01的名称'A01',现想把A02里的内容换成select tb02 from tb 的值,A02字段对应是A01里的值a1,而a1又是另一个tb里的数据,欲得到效果如下:
A01     A02     A03    A04
--------------------------
'a1'  '888'   '123'   'fk'
'a2'  '999'   '456'   'fk'
..

不知各位看懂了没有,在线等待

------解决方案--------------------
update 表A set A02=b.A02
from 表A a left join 表tb b on a.A01=b.A01

------解决方案--------------------

--1.
update 表A set A02=b.tb02
from 表A a left join 表tb b on a.A01=b.A01

--2.还是:
update 表A set A02='tb02'
from 表A a left join 表tb b on a.A01=b.A01

--第二种情况没有意思呀,直接变成tb02字符了。

------解决方案--------------------
A01     A02     A03    A04 
-------------------------- 
'a1'  '888'   '123'   'fk'
'a2'  '999'   '456'   'fk'


update A set a02 = b.tb02 from a , b where a.a01 = b.tb01

A01     A02     A03    A04 
-------------------------- 
'a1'  'tb02'   '123'   'fk'
'a2'  'tb02'   '456'   'fk'


第二种结果是常量值,貌似是个字段名,不对吧.
如果是:则无需要B表了.
update A set a02 = 'tb02'
------解决方案--------------------
引用:
SQL code?1234A01     A02     A03    A04 -------------------------- 'a1'  '888'   '123'   'fk''a2'  '999'   '456'   'fk'

update A set a02 = b.tb02 from a , b where a.a01 = b.tb01

SQL……
发现乌龟
------解决方案--------------------
两表关联更新就可以啦,是不是你的表名,列名没给对?