以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教update语句问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=51416)

--  作者:lqf168
--  发布时间:2014/5/26 16:22:00
--  请教update语句问题

 

sql数据库有两个表:表a,表b
表a有“产品编码”,“价格”“内部价格”三列,有9万笔记录。
表b有“产品编码”,“新价格”“新内部价格”三列,有5万笔记录
想用update语句把表b的“新价格”“新内部价格”根据“产品编码”更新到表a对应的“价格”“内部价格”列中。
请教如何写代码效率最好?


--  作者:有点甜
--  发布时间:2014/5/26 16:26:00
--  

 是access数据库,还是sqlserver数据库?

 

 直接编写update语句即可。


--  作者:lqf168
--  发布时间:2014/5/26 16:30:00
--  
以下是引用有点甜在2014-5-26 16:26:00的发言:

 是access数据库,还是sqlserver数据库?

 

 直接编写update语句即可。

是sqlserver数据库


--  作者:有点甜
--  发布时间:2014/5/26 16:34:00
--  

参考下面的语句,改一下。

 

UPDATE 表A SET 表A.第二列 = B.第二列, 表A.第三列 = b.第三列 FROM 表A a LEFT JOIN 表B b ON a.第一列 = b.第一列


--  作者:有点甜
--  发布时间:2014/5/26 16:36:00
--  

更新完成以后,表要重新加载load才能看到效果。

 

UPDATE 表A SET 表A.价格 = B.新价格, 表A.内部价格 = b.新内部价格 FROM 表A a LEFT JOIN 表B b ON a.产品编码 = b.产品编码


--  作者:Bin
--  发布时间:2014/5/26 16:36:00
--  
试试 update {表A} set 价格 = b.新价格 from {表A} a,{表B} b where a.产品编码=b.产品编码
--  作者:lqf168
--  发布时间:2014/5/26 17:09:00
--  
以下是引用有点甜在2014-5-26 16:36:00的发言:

更新完成以后,表要重新加载load才能看到效果。

 

UPDATE 表A SET 表A.价格 = B.新价格, 表A.内部价格 = b.新内部价格 FROM 表A a LEFT JOIN 表B b ON a.产品编码 = b.产品编码

甜老师的测试可以,速度很快。


--  作者:lqf168
--  发布时间:2014/5/26 17:11:00
--  
以下是引用Bin在2014-5-26 16:36:00的发言:
试试 update {表A} set 价格 = b.新价格 from {表A} a,{表B} b where a.产品编码=b.产品编码

谢谢Bin回复,
"="附近有错误,可能我没写对。

 

 


--  作者:pyh6918
--  发布时间:2014/7/12 21:32:00
--  

借贴一用

我和楼主有同样的需求,不同之处在于,我的新价值是根据表A单位列的内容,在表B中对应的列中取值。

如:表A单位列的内容是“生产部”,那么在表B的“生产部”列中取值,表A单位列的内容是“销售部”,那么在表B的“销售部”列中取值。

 

UPDATE 表A SET 表A.价格 = B.新价格 FROM 表A a LEFT JOIN 表B b ON a.产品编码 = b.产品编码

 

b.(表A.单位) 这个不知道怎么写。

 


--  作者:有点甜
--  发布时间:2014/7/13 9:25:00
--  

 回复9楼,你的表有问题,无法直接用sql语句更新的。

 

 你直接用foxtable的Find去查找和更新数据吧。