SQL update select结合语句详解及应用
QL update select语句
最常用的update语法是:
| 1 | UPDATE TABLE_NAME | 
如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦
第一,要select出来放在临时变量上,有很多个很难保存。 第二,再将变量进行赋值。
列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢? 就好象下面::
| 1 | INSERT INTO table1 | 
答案是可以的,具体的语法如下:
| 1 | UPDATE table1 alias | 
下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:
| 1 | id name | 
表b:
| 1 | id ClientName | 
(MS SQL Server)语句:
| 1 | UPDATE b SET ClientName = a.name FROM a,b WHERE a.id = b.id | 
(Oralce)语句:
| 1 | UPDATE b SET (ClientName) = (SELECT name FROM a WHERE b.id = a.id) | 
update set from 语句格式 当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。
对于这种情况,Sybase和SQL SERVER的解决办法是使用UPDATE…SET…FROM…WHERE…的语法,实际上就是从源表获取更新数据。
在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句。 其实在 SQL 语法中,这些连接也是可以用于 update 和 delete 语句的,在这些语句中使用 join 还常常得到事半功倍的效果。
| 1 | UPDATE T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID | 
用来同步两个表的数据!
Oralce和DB2都支持的语法:
| 1 | UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) | 
MS SQL Server不支持这样的语法,相对应的写法为:
| 1 | UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A LEFT JOIN B ON A.ID = B.ID | 
个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:
| 1 | UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID | 
在Oracle和DB2中的写法就比较麻烦了,如下:
| 1 | UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) | 
SQL update select结合语句详解及应用的更多相关文章
- SQL Update 语句详解
		SQL Update 语句详解 Update 语句 Update 语句用于修改表中的数据. 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 Person: L ... 
- 【转】MySQL用户管理及SQL语句详解
		[转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ... 
- mysql基础篇 - SELECT 语句详解
		基础篇 - SELECT 语句详解 SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ... 
- MySQL之SELECT 语句详解
		本文参考实验楼的SELECT 语句详解结合自己操作部分而写成. 注意:大多数系统中,SQL语句都是不区分大小写的,但是出于严谨和便于区分保留字和变量名,在书写的时,保留字应大写,而变量名应小写.所谓的 ... 
- 问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
		oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解 (2011-07-08 08:59:47) 转载▼ 标签: it 分类: oracle 我们经常会遇 ... 
- SQL DELETE 语句详解
		SQL DELETE 语句详解 DELETE 语句 DELETE 语句用于删除表中的行. 语法 DELETE FROM 表名称 WHERE 列名称 = 值 Person: LastName Fir ... 
- SQL update select语句
		SQL update select语句 最常用的update语法是:UPDATE <table_name>SET <column_name1> = <value>, ... 
- SQL中CONVERT()函数用法详解
		SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ... 
- SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)
		接上文:SQL Server 执行计划操作符详解(2)--串联(Concatenation ) 前言: 前面两篇文章介绍了关于串联(Concatenation)和断言(Assert)操作符,本文介绍第 ... 
随机推荐
- libtorch初体验
			环境 Ubuntu -18.04.1, opencv3.4.0 , python 3.6, cmake 3.5.0, pytorch 1.0. pytorch官网下载对应版本:https://py ... 
- NABCD校园生活
			N(Need,需求) 在校师生得到的信息分散,极大的影响了师生的学习效率,所以就会有快速得到全面信息的需求,而我们的APP正是在解决这个问题. A(Approach,做法) 我们会在主页进行信息分类, ... 
- 【测试记录】EF插入查询性能
			介绍 背景什么就不提了,无外乎出现了大数据需要处理.简单的说就是我测试了EF正常的插入以及一个优化小方式而已,然后做了查询记录.其余没有什么,写这篇只是为了记录结果方便以后数据参考吧. 代码介 ... 
- Java高级类特性(二)
			一.static关键字 static关键字用来声明成员属于类,而不是属于类的对象.1). static (类)变量类变量可以被类的所有对象共享,以便与不共享的成员变量区分开来. static变量也称作 ... 
- mongodb 权限设置--用户名、密码、端口
			转自:http://www.cnblogs.com/valor-xh/p/6369432.html 一.关于权限的默认配置 在默认情况下,mongod是监听在0.0.0.0之上的,任何客户端都可以直接 ... 
- 【Servlet】1、Servlet监听器及相关接口
			Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前.发生后可以做一些必要的处理. 接口: 目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,其中Ht ... 
- java_有秒计时的数字时钟
			题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目. 我们需要 ... 
- Spring全家桶系列–SpringBoot之入门JPA
			//本文作者:cuifuan 什么是JPA? 一种规范,并非ORM框架,也就是ORM上统一的规范 用了之后可以做什么,为什么要用? 代码解释: 实体类 package com.example.spri ... 
- Internet Download Manager IDM 破解器
			IDM 全名Internet Download Manager 是一款国外的多线程下载神器(简称IDM),Internet Download Manager 支持多媒体下载.自动捕获链接.自动识别文 ... 
- InheritParasitic.js
			// 寄生式继承 // 其基本思路是类似创建对象时的工厂模式,将继承过程封装在一个函数里,然后返回一个对象 function createObject(o){ var clone = Object.c ... 
