mysql 关联 update_关于SQL UPDATE关联更新

展开全部

分析如下

1、【如果存在测试临时表,则先e69da5e887aa62616964757a686964616f31333365666166删除,便于重复执行SQL】:

IF OBJECT_ID('tempdb..#SourceTable1') IS NOT NULL DROP TABLE #SourceTable1;

IF OBJECT_ID('tempdb..#SourceTable2') IS NOT NULL DROP TABLE #SourceTable2;

IF OBJECT_ID('tempdb..#UpdateTable') IS NOT NULL DROP TABLE #UpdateTable;

7d959eba3e1f0fea103cf18cac8d9bd0.png

2、【创建源表1】:

CREATE TABLE #SourceTable1(

Id UNIQUEIDENTIFIER,

SCode VARCHAR(50),

SName NVARCHAR(100),

Remark NVARCHAR(500)

)

61a10910b5d7bca3f49c7b3e22c86280.png

3、【创建源表2】:

CREATE TABLE #SourceTable2(

Id UNIQUEIDENTIFIER,

SCode VARCHAR(50),

SAttr1 VARCHAR(100),

SAttr2 VARCHAR(100)

)

a71edbc2020d636c4b5bb73f5d9c6cff.png

4、【创建需要更新数据的表】:

CREATE TABLE #UpdateTable(

Id UNIQUEIDENTIFIER,

SCode VARCHAR(50),

SName NVARCHAR(100),

SAttr1 VARCHAR(100),

SAttr2 VARCHAR(100)

)

1fc2b00668f430e79ec9268e5502ee30.png

5、【插入源表1测试数据】:

INSERT INTO #SourceTable1(Id, SCode, SName, Remark) VALUES(NEWID(), 'SCode1', '更新名字1', '更新测试备注1');

INSERT INTO #SourceTable1(Id, SCode, SName, Remark) VALUES(NEWID(), 'SCode2', '更新名字2', '更新测试备注2');

INSERT INTO #SourceTable1(Id, SCode, SName, Remark) VALUES(NEWID(), 'SCode3', '更新名字3', '更新测试备注3');

-- 查询插入的结果

SELECT * FROM #SourceTable1

e39675db60038e4050c09a8209743759.png

44ab0b6f2fc8a060e39865f485eb29ed.png

6、【插入源表2测试数据】:

INSERT INTO #SourceTable2(Id, SCode, SAttr1, SAttr2) VALUES(NEWID(), 'SCode1', 'SCode1-更新属性1', 'SCode1-更新属性2');

INSERT INTO #SourceTable2(Id, SCode, SAttr1, SAttr2) VALUES(NEWID(), 'SCode2', 'SCode2-更新属性1', 'SCode2-更新属性2');

-- 查询插入的结果

SELECT * FROM #SourceTable2

8e732f38bbb901d338cd24a8ab580098.png

2691efb4f89a49b22968043d18732007.png

7、【插入#UpdateTable的原始记录】:

INSERT INTO #UpdateTable(Id, SCode, SName, SAttr1, SAttr2) VALUES(NEWID(), 'SCode1', '名字1', 'SCode1-属性1', 'SCode1-属性1');

INSERT INTO #UpdateTable(Id, SCode, SName, SAttr1, SAttr2) VALUES(NEWID(), 'SCode2', '名字2', 'SCode2-属性2', 'SCode2-属性2');

INSERT INTO #UpdateTable(Id, SCode, SName, SAttr1, SAttr2) VALUES(NEWID(), 'SCode3', '名字3', 'SCode3-属性3', 'SCode3-属性3');

-- 查询插入的结果

SELECT * FROM #UpdateTable

f2357e59a1c9aaa3adc40f9b1c67b74d.png

95df30f675ad2fdd82386a7ed03be317.png

8、【使用联合查询,将#UpdateTable、源表1、2中相同SCode的行字段更新到表#UpdateTable】:

UPDATE ut

SET ut.SName = sc1.SName,

ut.SAttr1 = sc2.SAttr1,

ut.SAttr2 = sc2.SAttr2

FROM #UpdateTable ut, #SourceTable1 sc1, #SourceTable2 sc2

WHERE ut.SCode = sc1.SCode

AND ut.SCode = sc2.SCode

-- 查询插入的结果

SELECT * FROM #UpdateTable

aff2a0379342c34cf4570879d43bb424.png

7288f430eace3d9b96c0dddc8d1d6b76.png

扩展资料

SQL Aggregate 函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

1、AVG() - 返回平均值

2、COUNT() - 返回行数

3、FIRST() - 返回第一个记录的值

4、LAST() - 返回最后一个记录的值

5、MAX() - 返回最大值

6、MIN() - 返回最小值

7、SUM() - 返回总和

SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

1、UCASE() - 将某个字段转换为大写

2、LCASE() - 将某个字段转换为小写

3、MID() - 从某个文本字段提取字符

4、LEN() - 返回某个文本字段的长度

5、ROUND() - 对某个数值字段进行指定小数位数的四舍五入

6、NOW() - 返回当前的系统日期和时间

7、FORMAT() - 格式化某个字段的显示方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值