sql 要将两个或者多个表的数据联系关系,然后,点窜别的一个表数据时,需要用到如下布局:
UPDATE ...
SET ...
FROM xxx, xxxx
WHERE ...
方式/步调
- 1
【若是存在测试姑且表,则先删除,便于反复执行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;
- 2
【建立源表1】:
CREATE TABLE #SourceTable1(
Id UNIQUEIDENTIFIER,
SCode VARCHAR(50),
SName NVARCHAR(100),
Remark NVARCHAR(500)
)
- 3
【建立源表2】:
CREATE TABLE #SourceTable2(
Id UNIQUEIDENTIFIER,
SCode VARCHAR(50),
SAttr1 VARCHAR(100),
SAttr2 VARCHAR(100)
)
- 4
【建立需要更新数据的表】:
CREATE TABLE #UpdateTable(
Id UNIQUEIDENTIFIER,
SCode VARCHAR(50),
SName NVARCHAR(100),
SAttr1 VARCHAR(100),
SAttr2 VARCHAR(100)
)
- 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
- 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
- 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
- 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
来源:百闻(微信/QQ号:9397569),转载请保留出处和链接!
本文链接:https://www.ibaiwen.com/web/217469.html
- 上一篇: 在手机上如何写百度经验
- 下一篇: 支付宝蚂蚁森林怎么收取好友能量
猜你喜欢
-
什么是多户住宅(Multifamily Homes)?
-
什么是对冲策略(Hedging Strategies)?
-
什么是防御性驾驶考试(Defensive Driving Test)?
-
动脉瘤的症状是什么(Signs of Aneurysm)?
-
什么是胡子杯(Mustache Cup)?
-
如何成为质量保证经理(Become a Quality Assurance Manager)?
-
肺炎严重程度指数是多少(the Pneumonia Severity Index)?
-
什么是鼓台(Drum Table)?
-
商业银行资产有哪些不同类型(Different Types of Commercial Bank Assets)?
-
产品测试工程师是做什么的(What does a Product Test Engineer do)?
- 热门文章
-
WB蒙特利尔(WB Montreal)——欧美十大最差视频游戏开发商
迅猛龙(Velociraptor)——欧美史前十大死亡动物
什么是果酱猫(What Marmalade Cats)?
神奇蜘蛛侠2(The Amazing Spider-Man 2)——欧美最佳蜘蛛侠电影
希瑟(Heather)——欧美十大最佳柯南灰歌
faceu激萌怎么把瘦脸开到最大
二人梭哈
奥兹奥斯本(Ozzy Osbourne)——欧美十大高估歌手
什么是小脑前下动脉(Anterior Inferior Cerebellar Artery)?
我应该知道康涅狄格州的什么(What Should I Know About Connecticut)?
- 热评文章
- 最新评论
-
- 最近访客
-
- 站点信息
-
- 文章总数:261580
- 页面总数:9
- 分类总数:1
- 标签总数:0
- 评论总数:0
- 浏览总数:74382