昨天的SQL编程中,有使用到一个方法,就是把一个表某一字段更新至另一个表的字段中去。

实现这个方法,Insus.NET有尝试了几个方法,下面一一分享出来,让大家参考参考。

下面的数据只是模拟了,形式与Insus.NET实际数据相似。使用临时表,你真实表一样。

表一:

代码:

CREATE TABLE #Table1 ([Col1] INT NOT NULL PRIMARY KEY,[Col2] VARCHAR(10) NOT NULL,[Col3] VARCHAR(10) NULL)
INSERT INTO #Table1 ([Col1],[Col2],[Col3]) VALUES
(1,'GF',NULL),
(2,'ER',NULL),
(3,'SA',NULL),
(4,'JK',NULL),
(5,'RE',NULL)
GO

表二:

代码:

CREATE TABLE #Table2 ([Col1] INT NOT NULL,[Col2] VARCHAR(100) NOT NULL)
INSERT INTO #Table2 ([Col1],[Col2]) VALUES
(3,'TR'),
(2,'QT'),
(1,'JN'),
(5,'LP'),
(4,'TR')
GO

查询2张表的结果:

数据准备好了,看看要求,是需要把表2的Col2列值填充至表一的Col3上,2张表的对应主键均是Col1。

方法一:
 

代码:

DECLARE @r INT =1, @rs INT = 0
SELECT @rs = MAX([Col1]) FROM #Table2
WHILE @r <= @rs
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM #Table2 WHERE [Col1] = @r)
BEGIN
DECLARE @v VARCHAR(10)
SELECT @v = [Col2] FROM #Table2 WHERE [Col1] = @r
UPDATE #Table1 SET [Col3] = @v WHERE [Col1] = @r
END SET @r = @r + 1
END

看看执行结果:

方法二 ,也许不是真正更新,而是获取结果:

代码:

CREATE TABLE #t ([Col1] INT NOT NULL PRIMARY KEY,[Col2] VARCHAR(10) NOT NULL,[Col3] VARCHAR(10) NULL)

INSERT INTO #t ([Col1],[Col2],[Col3])
SELECT t1.[Col1],t1.[Col2],t2.[Col2] FROM #Table1 AS t1
INNER JOIN #Table2 AS t2 ON (t1.[Col1] = t2.[Col1])

得到的结果:

方法三,就是使用UPDATE ... INNER JOIN ...语法来处理,简单:

代码:

UPDATE t1
SET t1.[Col3] = t2.[Col2]
FROM #Table1 AS t1
INNER JOIN #Table2 AS t2 ON (t1.[Col1] = t2.[Col1])

执行结跟方法一的结果相同:

MS SQL中使用UPDATE ... INNER JOIN ...的更多相关文章

  1. SQL中使用update inner join和delete inner join

    Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,太神奇了.分享段示例代码: 1 2 3 4 5 ...

  2. 关于SQL中的Update语句

    今天在SQL数据库操作时需要将一张表中的数据Update到另一张表中去, 可是用我以往的写法确怎么也不能成功.代码如下: update table1 a set a.Col1=b.Col2 from ...

  3. SQL中使用UPDATE更新数据时一定要记得WHERE子句

    我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 my ...

  4. 使用SQL中的update更新多个字段值

    使用SQL中的update更新多个字段值,set后面的条件要用逗号不能用and set后面的多个条件之间没有关联也不可以有关联,所以就不能用and了:where 条件后面 可以为and 如: upda ...

  5. 书写 sql 中关于 update 多表联合更新的方法

    SQL Update多表联合更新的方法(1) sqlite 多表更新方法//----------------------------------update t1 set col1=t2.col1fr ...

  6. Spark SQL中的几种join

    1.小表对大表(broadcast join) 将小表的数据分发到每个节点上,供大表使用.executor存储小表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在SparkSQ ...

  7. SQL中的Update、delete与inner join 联合使用

    Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,太神奇了. update的格式是 update ...

  8. SQL中笛卡尔积-cross join的用法

    在数学中,笛卡尔乘积是指两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 假设集合A={a ...

  9. SQL中的left outer join,inner join,right outer join用法详解

    这两天,在研究SQL语法中的inner join多表查询语法的用法,通过学习,发现一个SQL命令,竟然涉及到很多线性代数方面的知识,现将这些知识系统地记录如下: 使用关系代数合并数据1 关系代数合并数 ...

随机推荐

  1. Codeforces Round #380 (Div. 2) 总结分享

    B. Spotlights 题意 有n×m个格子的矩形舞台,每个格子里面可以安排一个演员或聚光灯,聚光灯仅可照射一个方向(俯视,上下左右).若聚光灯能照到演员,则称为"good positi ...

  2. 自引用指针this

    C++为成员函数提供了一个名字为this的指针,这个指针称为自引用指针,每当创建一个对象时,系统就把this指针初始化为指向该对象,即this指针的值是当前调用成员函数的对象的起始地址.每当调用一个成 ...

  3. 利用跨域请求来隐藏firbug控制台中的Ajax请求

    本文链接:http://www.orlion.ml/63/ 普通jquery的Ajax请求在控制台中是可见的,如下: 而在利用jsonp(json with padding)进行Ajax跨域时,发现A ...

  4. 【原创】探索Newlife X组件利器之:XCoder点滴[附下载]

    本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Newlife XCode组件相关文章目录:http://www.cnblogs ...

  5. Oracle Dataguard之Real-Time Apply

    Oracle Dataguard一共支持三种模式:最大可用模式(Maximum Availability),最大性能模式(Maximum Performance),最大保护模式(Maximum Pro ...

  6. 使用webpack打包ThinkPHP的资源文件

    使用webpack打包ThinkPHP的资源文件 利用自己的空余时间一直在维护http://www.wx2share.com这个小网站,全是一个人在弄,由于只租得起虚拟空间,所以后台采用了简单方便的T ...

  7. Network - SNMP

    Simple Network Management ProtocolWikipediahttps://en.wikipedia.org/wiki/Simple_Network_Management_P ...

  8. Bootflat – 基于 Bootstrap CSS 框架的扁平化界面

    Bootflat 是一个开源的扁平化的 UI 工具包,基于 Bootstrap 3.1.0 CSS 框架.它为 Web 开发人员提供了一个创建优雅的 Web 应用程序的更快,更容易和更少的重复任务的途 ...

  9. iOS_UIImge_Gif的展示

    github地址: https://github.com/mancongiOS/UIImage.git 方式一: 用动画展示 UIImageView *gifImageView = [[UIImage ...

  10. android 中resources管理

    主要存在于res/value文件夹中 定义: dimen.xml:主要用于设置像素默认值 <resources> res/values/dimens.xml <dimen name= ...