当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 将列更新从一个表传递到另一个表

MSSQL
黑客经验谈 MSSQL SA权限入侵的感悟
3个步骤结束网站恶梦-SQL注入隐患!
用人工智能自动对SQL语句进行重写
防范sql注入式攻击js版本
SQL Server 2005数据库镜像配置脚本示例
SQL Server和Oracle的真正区别
如何把Access的数据导入到Mysql中
看看自己掌握了多少SQL快捷键
SQL2005数据库转到SQL2000的步骤
SQL“多字段模糊匹配关键字查询”
高手是怎样炼成的:精妙SQL语句介绍
SQL Server 2000数据库崩溃后的补救措施
SQL Server日志清除的两种方法教程简介
教你快速掌握数据库设计范式的基本概念
远程连接SQL Server 2000服务器的解决方案
循序渐进讲解数据表的十二个设计原则
经验总结:讲解大型数据库的设计准则
开发环境下优化SQl语句的十个重要步骤
如何查看并导出数据表中字段的注释信息
SQL Server 2005改进后的几个实用新特性

MSSQL 中的 将列更新从一个表传递到另一个表


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 153 ::
收藏到网摘: n/a

 

问:怎样在一个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开发团队