update 表b
set areacode=(select areacode from 表a where 表a.zip=表b.zip)

解决方案 »

  1.   

    update y set areacode=x.areacode from a x,b y where x.zip=y.zip
      

  2.   

    myclife(反方向的钟):
    我这样做过,但他说结果有多个.
      

  3.   

    to myclife(反方向的钟):
    :),正确.原来我的表名搞错了.to wanyingsong(豌豆) 
    你的应该也是对的.第一个拿大头了.第二拿小头了.
      

  4.   

    不会阿,这样做肯定是对的是不是你的a表里的zip和areacode不是一一对应的
      

  5.   

    create table #ta(areacode char(3),zip char(6))
    create table #tb(name char(3),areacode char(3),zip char(6),addr char(10))
    go
    insert into #ta
    select '020','510000' union all
    select '020','510001'insert into #tb
    select 'BBB',NULL,'510000','BBBB' union all
    select 'BBB',NULL,'510000','BBBB' union all
    select 'BBB',NULL,'510001','BBBB'
    goselect * from #tb
    ==========================================================
    name areacode zip    addr       
    ---- -------- ------ ---------- 
    BBB  NULL     510000 BBBB      
    BBB  NULL     510000 BBBB      
    BBB  NULL     510001 BBBB     
    ==========================================================
    go
    update #tb
    set areacode=(select areacode from #ta where #ta.zip=#tb.zip)
    go
    select * from #tb
    ==========================================================
    name areacode zip    addr       
    ---- -------- ------ ---------- 
    BBB  020      510000 BBBB      
    BBB  020      510000 BBBB      
    BBB  020      510001 BBBB   
    ==========================================================
    go
    drop table #ta
    drop table #tb
      

  6.   

    哦对了.表B中的有些记录zip字段是空的.
      

  7.   

    能肯定的是表a中的zip值(无空值)在表B中是绝对找得到的.
      

  8.   

    第一个:肯定不行,因为a.zip=b.zip 会找出多个值不管这个值是不是相同。
    如果同一个zip对应的阿areacode没有不同的话可以试试用
    update b
    set areacode=(select distinct areacode from a where a.zip=b.zip
    如果一个zip对应的areacode有不同就不好办了。
      

  9.   

    首先,你的 表a 中的Zip应该确定是唯一的,如果表b有null值,加个where就可以了吧, ... where isnull(表b.zip)=false 
      

  10.   

    我怀疑你的表a中存在这样的纪录areacode     zip
    -------------------
    020          510000
    020          510001
    021          510000所以才会说“查询结果有多个”
      

  11.   

    你得明确一下a.areacode和b.areacode的对应关系。
      

  12.   

    zip-->areacode
    n   :   1b.zip的所有值(除了null)都来之a.zip,a.zip值唯一无重复值(设计上是这样子的,怎么测试是否唯一?).