有三个表
表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,新的产品表
产品编号 产品类别编号 产品详细
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 老的产品类别表.产品类别名称=新的产品类别表.产品类别名称但提示错误:列前缀 '新的产品类别表' 与查询中所用的表名或别名不匹配。
列前缀 '老的产品类别表' 与查询中所用的表名或别名不匹配。后来想了想,根本就不对-----------------------------
希望高手指点一下,要不上面的我就白写了,不知道各位能不能看明白。在线等
set 产品类别编号=c.产品类别编号
from 产品表 a
left outer join 老的产品类别表 b on a.产品类别编号 =b.产品类别编号
left outer join 新的产品类别表 c on b.产品类别名称=c.产品类别名称
如果就写c,提示:列名“产品类别编号”无效如果改成表名
提示:列前缀 '表名' 与查询中所用的表名或别名不匹配。这个怎么解决 啊?
from 产品表 a inner join
(select c.产品类别编号 as 产品类别编号1,d.产品类别编号 from 老的产品类别表 c
inner join 新的产品类别表 d on c.产品类别名称=d.产品类别名称) b on a.产品类别编号=b.产品类别编号1
set 产品类别编号=c.产品类别编号有问题啊,其中c这有问题,
如果就写c,提示:列名“产品类别编号”无效如果改成表名
提示:列前缀 '表名' 与查询中所用的表名或别名不匹配。这个怎么解决 啊?
---------
A B C只是表的別名而已,這樣語句會看起來簡短些。看錯誤提示,列名“产品类别编号”无效,你要確保“表2,新的产品类别表”中有“产品类别编号”這個字段,如果沒有,要改為正確的名稱。
--------------
表2中肯定有这个字段
---------
如果提示:列前缀 '表名' 与查询中所用的表名或别名不匹配。
该怎么解决??
该怎么解决??--------------
如果你指定了別名,在Set後面就必須使用別名。
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' 与查询中所用的表名或别名不匹配。
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
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的字段
update coProMaintenance
set SecondClassID=c.SecondClassID
------
系统不知道c是什么,会提示:列名 'SecondClassID' 无效。
还是基础知识不牢固,谢谢楼上的兄弟们,结贴
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
set a.产品类别编号=c.产品类别编号
from 产品表 a
left outer join 老的产品类别表 b on a.产品类别编号 =b.产品类别编号
left outer join 新的产品类别表 c on b.产品类别名称=c.产品类别名称