日期:2014-05-18  浏览次数:20482 次

SQL2000 两表字段对比后UPDATE符合条件的字段
库中有2个表,A表和B表
A表中字段如下
ID   AREA                                     CITYID
1     北京朝阳区                           NULL
2.   广东省深圳市南山区1         NULL
3.   广东省深圳市福田区           NULL
4.   广东省深圳市南山区2         NULL
5.   广东省                                   NULL
B表字段
ID     CITY                                   SZCODE
1.     北京市                               110000
2.     朝阳区                               110105
3.     广东省                               440000
4.     深圳市                               440300
5.     南山区                               440305
现在想将A表里的CITYID   用B表里的SZCODE填充
根据A表的AREA和B表的CITY对比后进行插入CITYID
A表数据大约30万数据,而B表就是中国行政区域划分数据,大约3500数据
A表替换后的效果如下:
ID   AREA                                     CITYID
1     北京朝阳区                           NULL(110105)
2.   广东省深圳市南山区1         NULL(440305)
3.   广东省深圳市福田区           NULL(440303)
4.   广东省深圳市南山区2         NULL(440305)
5.   广东省                                   NULL(440000)
刚学SQL,请大家帮忙.分数不多
请详细写清,在线等待....

------解决方案--------------------
http://community.csdn.net/Expert/topic/4839/4839265.xml?temp=.0194971
--参考
------解决方案--------------------
update A set a.CITYID=b.SZCODE from A a,B b where a.ID=b.ID

or

update A set a.CITYID=b.SZCODE from A a inner join B b on a.ID=b.ID
------解决方案--------------------
--try

update A set CITYID=(select max(B.SZCODE) as SZCODE from B where charindex(B.CITY, A.AREA)> 0)
------解决方案--------------------
update A set CITYID=B.SZCODE
from B
where charindex(B.CITY, A.AREA)> 0
------解决方案--------------------
update A set a.CITYID=b.SZCODE
from A a
inner join B b on a.ID=b.ID and charindex(B.CITY, A.AREA)> 0

------解决方案--------------------
--更正:
update A set a.CITYID=b.SZCODE
from A a, B b
where charindex(B.CITY, A.AREA)> 0
------解决方案--------------------
select a.*,b.SZCODE,charindex(CITY,AREA) as a into # from a,b where charindex(CITY,AREA)> 0