SQL update select语句

最常用的update语法是:

1

2

UPDATETABLE_NAME

SET column_name1 =VALUE WHRER column_name2 =VALUE

如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦

第一,要select出来放在临时变量上,有很多个很难保存。
第二,再将变量进行赋值。

列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?
就好象下面::

1

2

3

INSERTINTO table1

(c1, c2, c3)

(SELECT v1, v2, v3 FROM table2)

答案是可以的,具体的语法如下:

1

2

3

4

5

6

UPDATE table1 alias

SET(column_name,column_name )=(

SELECT(column_name, column_name)

FROM table2

WHERE column_name = alias.column_name)

WHERE column_name =VALUE

下面是这样一个例子:
两个表a、b,想使b中的memo字段值等于a表中对应id的name值
表a:

1

2

3

4

id name

1王

2李

3张

表b:

1

2

3

4

id ClientName

1

2

3

(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

2

UPDATE T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID

FROM T_OrderForm A LEFTJOIN T_ProductInfo B ON B.L_ID=A.ProductID

用来同步两个表的数据!

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 LEFTJOIN 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

2

UPDATE A SET(A1, A2, A3)=(SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)

WHERE ID IN(SELECT B.ID FROM B WHERE A.ID = B.ID)

原创文章如转载请注明,转载自:www.aimks.com

SQL update select结合语句详解及应用相关推荐

  1. 【转载】SQL update select结合语句详解及应用

    最常用的update语法是: 1 2 UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = VALUE 如果我的更新值Valu ...

  2. SQL Server exec动态语句详解

    之前在项目中偶尔看到exec动态语句,所以在网上找了一些资料,整理总结一下,还有在自己项目中使用的时候遇到的坑. exec语句的格式 SQL语句写在括号里面 exec('select * from t ...

  3. iif能用到mysql中吗_数据库基础知识:SQL中的IIF语句详解

    IIf 返回由逻辑测试确定的两个数值或字符串值之一. 语法 数字 IIf(Logical EXPression, Numeric Expression1, Numeric Expression2) 如 ...

  4. sql中的iif语句详解

    IIf   返回由逻辑测试确定的两个数值或字符串值之一.          语法      数字     IIf(«Logical   Expression»,   «Numeric   Expres ...

  5. mysql iif函数_sql中的iif语句详解_mysql

    IIf 返回由逻辑测试确定的两个数值或字符串值之一. 语法 数字 IIf(«Logical Expression», «Numeric Expression1», «Numeric Expressio ...

  6. SQL语句 SELECT LIKE用法详解

    在SQL结构化查询语言中,LIKE语句有着至关重要的作用. LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用 ...

  7. mysql切换用户sql语句,MySQL用户管理及SQL语句详解

    [(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...

  8. MyBatis SQL语句详解

    MyBatis SQL语句详解 1 CRUD标签 1.1 select 1.2 insert 1.3 update 1.4 delete 1.5 #{ }和${ }的区别 2 动态SQL 2.1 if ...

  9. SQL语句详解(四)——SQL联表查询

    今天我们继续给大家介绍MySQL相关知识,本文主要内容是SQL联表查询. 一.SQL联表查询简介 在前文SQL语句详解(三)--SQL子查询中,我们给大家介绍了SQL子查询的相关知识和使用示例.实际上 ...

最新文章

  1. 客快物流大数据项目(四):大数据项目为什么使用Docker
  2. AI公司为什么集体造“芯”?寻求商业变现新途径
  3. 【转载】插件自动升级
  4. eclipse奇淫技巧 (转)
  5. 飞鸽传书2011什么时候更新?
  6. VS|Qt工作笔记-修改pro文件生成目录清晰的项目结构并添加三方库
  7. python爬虫获取下一页url_Python爬虫获取页面所有URL链接过程详解
  8. python查看mongo库容量_mongo查看数据库空间大小
  9. WINDOWS系统最近使用的项目路径
  10. 关于React Hooks使用
  11. 字节码插桩技术---Transform配合ASM进行插桩(三)
  12. 彻底解决pycharm中用matplotlib表格绘制时图表中汉字设置
  13. 数据爬虫—全国一般纳税人企业数据采集
  14. 【解决】Yandex浏览器Bing搜索遭遇trovi.com劫持
  15. 小米平板4 Plus简单刷成开发版获取Root超级权限的流程
  16. 视频监控摄像头的互联网化实践思路
  17. Matlab代码:综合能源系统(IES)的优化调度 风力、光伏、燃气轮机、燃气内燃机、燃气锅炉、余热回收系统、吸收式制冷机、电制冷机
  18. 二分三分法--+++这一天的纪录
  19. [31期] 给自己的一个忠告
  20. java初级能干什么_小黄鸭系列java基础知识 | java能干什么?

热门文章

  1. 如何评价英伟达9月2日凌晨发布的30系列新显卡?
  2. 2019计算机视觉论文精选速递(2019/1/23-2018/1/28)
  3. 搜索推荐炼丹笔记:Transformer在搜索推荐中的应用
  4. 视频内容理解在Hulu的应用与实践
  5. C# HttpWebResponse WebClient 基础连接已经关闭: 发送时发生错误.
  6. Android中的设计模式之代理模式
  7. PB级分布式大数据的处理和分析应用
  8. yum安装nginx的负载均衡详解
  9. jQuery用面向对象的思想来编写验证表单的插件
  10. expandableListView 总结