Foxtable(狐表)用户栏目专家坐堂 → 请教update语句问题


  共有4496人关注过本帖树形打印复制链接

主题:请教update语句问题

帅哥哟,离线,有人找我吗?
lqf168
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:143 积分:3398 威望:0 精华:0 注册:2012/1/14 14:34:00
请教update语句问题  发帖心情 Post By:2014/5/26 16:22:00 [只看该作者]

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/26 16:26:00 [只看该作者]

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

 

 直接编写update语句即可。


 回到顶部
帅哥哟,离线,有人找我吗?
lqf168
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:143 积分:3398 威望:0 精华:0 注册:2012/1/14 14:34:00
  发帖心情 Post By:2014/5/26 16:30:00 [只看该作者]

以下是引用有点甜在2014-5-26 16:26:00的发言:

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

 

 直接编写update语句即可。

是sqlserver数据库


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/26 16:34:00 [只看该作者]

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/26 16:36:00 [只看该作者]

试试 update {表A} set 价格 = b.新价格 from {表A} a,{表B} b where a.产品编码=b.产品编码

 回到顶部
帅哥哟,离线,有人找我吗?
lqf168
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:143 积分:3398 威望:0 精华:0 注册:2012/1/14 14:34:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:143 积分:3398 威望:0 精华:0 注册:2012/1/14 14:34:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1135 积分:11099 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By: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.单位) 这个不知道怎么写。

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/13 9:25:00 [只看该作者]

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

 

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


 回到顶部
总数 13 1 2 下一页