CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

如何用SQL实现类似于矩阵的按位置相乘功能

楼主wlz47(秋水沉舟)2002-07-17 06:51:18 在 MS-SQL Server / 基础类 提问

表A,表B结构类似,  
  假设表A的结构为:  
      ID     x1   x2   x3  
   
  表B的结构为:  
      ID     y1   y2   y3  
   
  其中ID值都是唯一的  
   
  问:  
  如何用SQL语句实现   A   =   A   *   B  
   
  即对于ID值相同的表A、B的记录,更新表A的方法如下:  
      A.x1   =   A.x1   *   B.y1  
      A.x2   =   A.x2   *   B.y2  
      A.x3   =   A.x3   *   B.y3    
  问题点数:200、回复次数:7Top

1 楼newly_ignorant(不学无术)回复于 2002-07-17 09:51:10 得分 10

假设Xn、Yn都是数值  
   
  update   A    
  set   A.x1   =   A.x1   *   B.y1  
        ,A.x2   =   A.x2   *   B.y2  
        ,A.x3   =   A.x3   *   B.y3    
  from   A,B  
  where   A.ID   =   B.ID  
   
  Top

2 楼wlz47(秋水沉舟)回复于 2002-07-17 16:59:35 得分 0

这个好像不行,我用的这个软件的自带数据库SQL语言不支持update   form两个表  
   
  请问还有别的方法没有Top

3 楼erickleung()回复于 2002-07-17 20:43:06 得分 40

update   A    
  set   A.x1   =   A.x1   *   (select   B.y1   from   B   where   A.ID   =   B.ID)    
        ,A.x2   =   A.x2   *   (select   B.y2   from   B   where   A.ID   =   B.ID)  
        ,A.x3   =   A.x3   *   (select   B.y3   from   B   where   A.ID   =   B.ID)  
  Top

4 楼CSDNM(决定不当CSDN经理了)回复于 2002-07-17 21:56:36 得分 60

不知道你的数据库类型,但erickleung()   的方法应该可以,但速度可能不快,以下语句如果可以,那速度应该快一些:  
   
  update   A   inner   join   b   on   a.id=b.id  
  set   A.x1   =   A.x1   *   B.y1  
        ,A.x2   =   A.x2   *   B.y2    
        ,A.x3   =   A.x3   *   B.y3    
   
  Top

5 楼KingSunSha(弱水三千)回复于 2002-07-17 22:23:02 得分 70

在oracle这样不支持update语句中带两个表名的数据库中,如下的方法更通用一点:  
  update   A    
  set   (x1,x2,x3)   =   (select   A.x1*B.y1,   A.x2*B.y2,   A.x3*B.y3  
                                          from   B  
                                        where   ID   =   A.ID);  
  Top

6 楼mmzxg(超级笨蛋)回复于 2002-07-18 08:40:11 得分 20

update   A    
  set   (x1,x2,x3)   =   (select   A.x1*B.y1,   A.x2*B.y2,   A.x3*B.y3  
                                          from   B  
                                        where   ID   =   A.ID);  
  Top

相关问题

  • 不同大小矩阵相乘
  • 请问如何用c#实现一个矩阵类来做矩阵的求逆和矩阵的相乘?
  • 200分紧急求助!关于多矩阵相乘的问题!
  • 大家我为什么不能实现矩阵相乘啊?
  • 关于double变量与矩阵类相乘的重载问题
  • 请教一个矩阵相乘的问题。。。
  • 有关于矩阵的函数吗?如求协方差,相乘 等
  • 各位老大,帮帮我了,多个矩阵相乘,如何处理
  • sql中实现两列相乘!!
  • 一个简单的矩阵相乘的算法,调试的时候老出错,请指教啊。

关键词

  • 语句
  • 数据库
  • 结构
  • sql
  • 表
  • from b where
  • 方法
  • update
  • set
  • select

得分解答快速导航

  • 帖主:wlz47
  • newly_ignorant
  • erickleung
  • CSDNM
  • KingSunSha
  • mmzxg

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo