问:怎样在一个UPDATE语句中使用表B的三个列更新表A中的三个列?

转载 2004年10月29日 12:44:00

问:怎样在一个UPDATE语句中使用表B的三个列更新表A中的三个列?

答:对这个问题,您可以使用强大的关系代数。本页中的代码说明了如何组合使用FROM子句和JOIN操作,以达到用其他表中数据更新指定列的目的。在设计关系表达式时,您需要决定是否需要单一行匹配多个行(一对多关系),或者需要多个行匹配被联接表中的单一行以更新所有行(多对一关系)。

在一对多关系中,SQL Server始终使用它找到的最后一行更新数据。但是,您无法控制最后一行所在的位置。在多处理器的计算机上,查询可能是同步进行的,相同的查询最后一行的位置可能会不同。因此,Microsoft建议尽量不要使用一对多关系。

如果待更新的表与FROM子句中的表相同,并且FROM子句只包含对该表的一个引用,别名可能未被指定。如果待更新的表在FROM子句中出现了多次,只有该表的一个引用可以省略表的别名,对该表的所有其他引用必须包含一个表别名。

USE tempdb
GO
CREATE TABLE #t1 (c1 int NOT NULL, c2 char(5), c3 char(5),
 c4 char(5))
GO
CREATE TABLE #t2 (c1 int NOT NULL, c2 char(5), c3 char(5),
 c4 char(5))
GO

--数据赋值
INSERT #t1 values (1,'hello','there','fred')
INSERT #t2 values (1,'how','are','you?')

--更新数据
UPDATE #t1 SET #t1.c2 = #t2.c2, #t1.c3 = #t2.c3,
 #t1.c4 = #t2.c4
FROM #t2
WHERE #t1.c1 = #t2.c1

--检查结果
SELECT * FROM #t1

—Microsoft SQL Server开发团队

从B表里取字段,更新A表的值

要实现:从B表里取字段,更新A表的值,可以使用 exists 函数。 例如: A表字段更新为B表的字值 T1表结构 id     name      school 1      ming...
  • wangjin890620
  • wangjin890620
  • 2014年12月02日 10:37
  • 1116

SQL 用B表数据更新A表数据

update b set b.state=(b.state & ((a.ALL_CHANNEL * power(2, 2))|3)) from device a, d_TimeUploadDeta...
  • hejianhua
  • hejianhua
  • 2013年12月02日 16:36
  • 4385

SQL update 用另外一个表更新一列

1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where ...
  • liuyuehui110
  • liuyuehui110
  • 2015年03月25日 17:14
  • 7085

update 把两个表关联后把B表一列的值更新A表的某一列

执行update语句把两个表关联后把B表的一列更新A表中的某一列,     语句如下:     update   a     set   a.pd_mobile_phone   =   (select...
  • xiaojianpitt
  • xiaojianpitt
  • 2007年12月01日 13:19
  • 4104

在顺序表A中删除B、C中重复的元素

例题:已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。试对顺序表编写实现上述操作的算法,并分析你的算法的时间复杂度(注意:题中没有特别指明同一...
  • MOON5555
  • MOON5555
  • 2017年10月26日 11:51
  • 312

A表中的数据更新到B表SQL语法-update set from where

下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值      表a:id,name                1       王    ...
  • m0_38002798
  • m0_38002798
  • 2017年09月09日 10:26
  • 841

SQL中 将同一个表中的A列更新到B列,B列更新到A列

其实这个不是问题,直接写更新语句即可,可以参考下面动画演示: SQL source code: CREATE TABLE [dbo].[tbl] ( [id] IN...
  • linybo
  • linybo
  • 2015年07月17日 14:50
  • 408

已知A,B,C为三个元素值递增有序的线性表,要求对表A如下运算:删去那些既在表B中出现又在表C......

不善于解释,代码在下面,function函数是主要实现的函数,希望能帮到你#include #include #include #define SUCCESS 1 #define FAIL 0 #de...
  • weixin_41133154
  • weixin_41133154
  • 2017年12月15日 18:49
  • 139

A表字段更新为B表的字段值

A表字段更新为B表的字段值   T1表 结构 id      name       school 1       ming1      清华大学 2       ming2       ...
  • housonglin1213
  • housonglin1213
  • 2016年12月06日 10:49
  • 571

更新 将B表的数据更新到A表中的某个字段的sql(根据条件)

update  A set FResponPositionID=(select FResponPositionID from B where A.funitid=B.fid   and B.fisl...
  • douml88
  • douml88
  • 2016年12月21日 17:16
  • 2582
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:问:怎样在一个UPDATE语句中使用表B的三个列更新表A中的三个列?
举报原因:
原因补充:

(最多只允许输入30个字)