有三个表
表1,新的产品表
产品编号 产品类别编号 产品详细
1             1        LALA
2             3        HEHE
3             4        HAHA表2,新的产品类别表
产品类别编号    产品类别名称
1                   aa
2                   bb
3                   cc
4                   dd
5                   ee表3,老的产品类别表
产品类别编号    产品类别名称
1                   aa
3                   bb
4                   cc
9                   dd
10                  ff--------------------------------
网站因为要改版,产品类别表的数据有变化,但变化不大。现在要更改产品表中产品类别编号,原来三个产品的类别编号分别是1,3,4。根据新、老产品类别表的类别名称相同,更改成新的产品类别表里的数据,也就是改成1,2,3。--------
我是这样写的
update 产品表 set 产品表.产品类别编号=新的产品类别表.产品类别编号 where 老的产品类别表.产品类别名称=新的产品类别表.产品类别名称但提示错误:列前缀 '新的产品类别表' 与查询中所用的表名或别名不匹配。
列前缀 '老的产品类别表' 与查询中所用的表名或别名不匹配。后来想了想,根本就不对-----------------------------
希望高手指点一下,要不上面的我就白写了,不知道各位能不能看明白。在线等

解决方案 »

  1.   

    update 产品表 
    set 产品类别编号=c.产品类别编号 
    from 产品表 a
    left outer join  老的产品类别表 b on a.产品类别编号 =b.产品类别编号 
    left outer join 新的产品类别表 c on b.产品类别名称=c.产品类别名称
      

  2.   

    update 产品表 set 产品表.产品类别编号=新的产品类别表.产品类别编号 from 新的产品类别表 inner join 老的产品类别表 on 老的产品类别表.产品类别名称=新的产品类别表.产品类别名称 where 老的产品类别表.产品类别编号=产品表.产品类别编号
      

  3.   

    如果是SQL数据库,乔峰的正解
      

  4.   

    set 产品类别编号=c.产品类别编号有问题啊,其中c这有问题,
    如果就写c,提示:列名“产品类别编号”无效如果改成表名
    提示:列前缀 '表名' 与查询中所用的表名或别名不匹配。这个怎么解决 啊?
      

  5.   

    update a set a.产品类别编号=b.产品类别编号 
    from 产品表 a inner join 
    (select c.产品类别编号 as 产品类别编号1,d.产品类别编号 from 老的产品类别表 c 
    inner join 新的产品类别表 d on c.产品类别名称=d.产品类别名称) b on a.产品类别编号=b.产品类别编号1
      

  6.   

    zdyguilong(Keep Walking!) ( ) 信誉:100    Blog  2007-03-13 14:55:32  得分: 0  
     
     
       set 产品类别编号=c.产品类别编号有问题啊,其中c这有问题,
    如果就写c,提示:列名“产品类别编号”无效如果改成表名
    提示:列前缀 '表名' 与查询中所用的表名或别名不匹配。这个怎么解决 啊?
      
     
    ---------
    A B C只是表的別名而已,這樣語句會看起來簡短些。看錯誤提示,列名“产品类别编号”无效,你要確保“表2,新的产品类别表”中有“产品类别编号”這個字段,如果沒有,要改為正確的名稱。
      

  7.   

    A B C只是表的別名而已,這樣語句會看起來簡短些。-------------------这个我知道看錯誤提示,列名“产品类别编号”无效,你要確保“表2,新的产品类别表”中有“产品类别编号”這個字段,如果沒有,要改為正確的名稱。
    --------------
    表2中肯定有这个字段
    ---------
    如果提示:列前缀 '表名' 与查询中所用的表名或别名不匹配。
    该怎么解决??
      

  8.   

    如果提示:列前缀 '表名' 与查询中所用的表名或别名不匹配。
    该怎么解决??--------------
    如果你指定了別名,在Set後面就必須使用別名。
      

  9.   

    update coProMaintenance
    set SecondClassID=coProductSecondClass.SecondClassID 
    from coProMaintenance a
    left outer join  middlelei b on a.SecondClassID =b.SecondClassID 
    left outer join coProductSecondClass c on b.Middlelei_name=c.SecondClassName
    ---------
    这是我数据库中实际的表名和字段名
    就是提示:列前缀 'coProductSecondClass' 与查询中所用的表名或别名不匹配。
      

  10.   

    改為update coProMaintenance
    set SecondClassID=c.SecondClassID 
    from coProMaintenance a
    left outer join  middlelei b on a.SecondClassID =b.SecondClassID 
    left outer join coProductSecondClass c on b.Middlelei_name=c.SecondClassName
      

  11.   

    declare @coProMaintenance  table (
    SecondClassID int
    )declare @middlelei  table(
    SecondClassID int
    ,Middlelei_name nvarchar(10)
    )declare @coProductSecondClass table(
    SecondClassID  int
    ,SecondClassName nvarchar(10)
    )
    update @coProMaintenance
    set SecondClassID=c.SecondClassID
    from @coProMaintenance a
    left outer join @middlelei b on a.SecondClassID =b.SecondClassID
    left outer join @coProductSecondClass c on b.Middlelei_name=c.SecondClassName(0 行受影响)也就是说你的表结构一定与上面定义的不一样
    try====
    coProductSecondClass 表的确没有名为SecondClassID的字段
      

  12.   

    to paoluo(一天到晚游泳的鱼)你这样写
    update coProMaintenance
    set SecondClassID=c.SecondClassID 
    ------
    系统不知道c是什么,会提示:列名 'SecondClassID' 无效。
      

  13.   

    提示是指你对应的表中列名 'SecondClassID' 无效啊
      

  14.   

    ok了,是我看错了
    还是基础知识不牢固,谢谢楼上的兄弟们,结贴
    update coProMaintenance
    set SecondClassID=c.SecondClassID 
    from coProMaintenance a
    left outer join  middlelei b on a.SecondClassID =b.middlelei_id //原来是这里错误
    left outer join coProductSecondClass c on b.Middlelei_name=c.SecondClassName
      

  15.   

    暈,我是說coProductSecondClass的別名就是c,怎麼會找不到c呢.
      

  16.   

    update 产品表 
    set a.产品类别编号=c.产品类别编号 
    from 产品表 a
    left outer join  老的产品类别表 b on a.产品类别编号 =b.产品类别编号 
    left outer join 新的产品类别表 c on b.产品类别名称=c.产品类别名称