多个表关联同时更新多个不同的记录方法来共享

下面是一个测试示例。
1。首先,创建两个临时表并输入测试数据。
复制代码代码如下所示:
创建表# temptest1

ID int,
名为varchar(50),
年龄int

创建表# temptest2

ID int,
名为varchar(50),
年龄int




此时的表数据正在查询:

# temptest1 # temptest2


2。在# temptest2年龄现在更新的年龄在相应的# temptest1。
事实上,表1 }的ID年龄改为19岁,ID的年龄改为1岁,为20岁。2。
当然,这里的要求只是一个SQL语句,不能循环使用。
结果如下:



实现方法如下:
更新T1
设T1。年龄t2.age
从# temptest1 T1
加入# temptest2 T2
在t1.id = t2.id

(补充)SQL Server 2008合并命令写入:
合并成# temptest1 T1
使用(选择年龄、身份的# temptest2)T2
在t1.id = t2.id
当匹配时
更新t1.age = t2.age

这不是一个有趣的SQL吗

如何一次更新多个不同值的记录
标题可能不清楚,假设有两个这样的表:
复制代码代码如下所示:
创建表的种皮(
身份证号码,
英格VARCHAR2(3),
赤VARCHAR2(3)

创建表的叫(
身份证号码,
英格VARCHAR2(3),
赤VARCHAR2(3),
anythingother VARCHAR2(1)


现有记录
特斯塔:
ID工程师卡
===============
1 1
2 B两
3 C三
TestB:
什么都可以…
荒凉
1 D四
2 E五
3 F六
我要更新的记录的工卡领域叫种皮对应的ID。

代码:

SQL >设置autot上
更新TA(从结核病中选择TB)。
已经更新了4行。
所用时间:00:00:0.01
实施计划
----------------------------------------------------------
计划哈希值:1137212925
--------------------------------------------------------------------------------
我的名字|操作| | |行| |字节成本(CPU)时间| |
--------------------------------------------------------------------------------
| 0 | UPDATE语句| | | | 5 165 20(30)| 00:00:01 |
| 1 |更新| TA | | | | |
2哈希连接半| * | | | | | 5 165 5(20)| 00:00:01 |
3表访问全| | | TA | | | 5 100 2(0)| 00:00:01 |
| 4 |观| vw_sq_1 | | | 4 52 2(0)| 00:00:01 |
5表访问全|结核病| | | | | 4 52 2(0)| 00:00:01 |
6表访问全| * | |结核病| | | 1 26 2(0)| 00:00:01 |
--------------------------------------------------------------------------------
谓词信息(由操作ID标识):
离开
2 -访问(ta。item_1 )
6过滤器(TB)。=:B1)


用于此语句的动态采样(级别= 2)
统计信息
----------------------------------------------------------
0递归调用
4分贝块得到
23一致的获取
0物理读
1004重做日志大小
840个字节通过网络发送给客户机
从客户端接收的856个字节
3 SQL*Net切换到/从客户端
1类(内存)
0类(磁盘)
4行处理
更新TA(从结核病中选择TB)。
已经更新了4行。
所用时间:00:00:0
实施计划
----------------------------------------------------------
计划哈希值:3571861550
不是
我的名字|操作| | |行| |字节成本(CPU)时间| |
不是
| 0 | UPDATE语句| | | | 1 20 7(15)| 00:00:01 |
| 1 |更新| TA | | | | |
|×2 |滤波器| | | | | |
3表访问全| TA | | | | | 5 100 2(0)| 00:00:01 |
4表访问全|结核病| * | | | | 1 13 2(0)| 00:00:01 |
5表访问全| * | |结核病| | | 1 26 2(0)| 00:00:01 |
不是
谓词信息(由操作ID标识):
离开
2过滤器(ta)。(=)。A来自TBTB
TB。= B1)
4过滤器(TB)。=:B1)
5过滤器(TB)。=:B1)


用于此语句的动态采样(级别= 2)
统计信息
----------------------------------------------------------
11递归调用
1分贝块得到
53一致的获取
0物理读
588重做日志大小
840个字节通过网络发送给客户机
从客户端接收的858个字节
3 SQL*Net切换到/从客户端
1类(内存)
0类(磁盘)
4行处理



如果创建唯一索引(一)tb_a_uidx结核病;

{复制到剪贴板}

代码:

已更新(选择TA。B表,肺结核。B TBB来自Ta,TB,TA。= TB的。);
已经更新了4行。
所用时间:00:00:0.01
实施计划
----------------------------------------------------------
计划哈希值:1761655026
不是
我的名字|操作| | |行| |字节成本(CPU)时间| |
不是
| 0 | UPDATE语句| | | | 4 184 5(20)| 00:00:01 |
| 1 |更新| TA | | | | |
|×2 |哈希连接| | | | 4 184 5(20)| 00:00:01 |
3表访问全|结核病| | | | | 4 104 2(0)| 00:00:01 |
4表访问全| TA | | | | | 5 100 2(0)| 00:00:01 |
不是
谓词信息(由操作ID标识):
离开
2 -访问(ta。=TB。A)


用于此语句的动态采样(级别= 2)
统计信息
----------------------------------------------------------
8递归调用
4分贝块得到
17一致的获取
0物理读
1004重做日志大小
840个字节通过网络发送给客户机
从客户端接收的827个字节
3 SQL*Net切换到/从客户端
3类(内存)
0类(磁盘)
4行处理