update语法汇总

摘要:
最常用的update语法是:UPDATESET=,SET=如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要select出来放在临时变量上,有很多个哦第二,再将变量进行赋值。在SQL中,表连接常常用于select语句,其实在SQL语法中,这些连接也是可以用于update和delete语句的,在这些语句中使用join还常常得到事半功倍的效果。
最常用的update语法是:
UPDATE <table_name>
SET <column_name1> = <value>,
SET <column_name2> = <value>

如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦
第一,要select出来放在临时变量上,有很多个哦
第二,再将变量进行赋值。
列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?就好象下面
insert into table1
(c1, c2, c3)
(select v1, v2, v3 from table2)

答案是可以的,具体的语法如下:
UPDATE <table_name> <alias>
SET(<column_name>,<column_name>)=(
SELECT(<column_name>, <column_name>)
FROM <table_name>
WHERE <alias.column_name> = <alias.column_name>)
WHERE <column_name> <condition> <value>;

下面是这样一个例子:

两个表a、b,想使b中的memo字段值等于a表中对应id的name值
表a:id, name
1 王
2 李
3 张
表b:id,ClientName
1
2
3
(MS SQL Server)语句:update b set ClientName = a.name from a,b where a.id = b.id

(Oralce)语句: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 还常常得到事半功倍的效果。

UpdateT_OrderFormSETT_OrderForm.SellerID =B.L_TUserID
FROM T_OrderForm ALEFT JOIN T_ProductInfo BON B.L_ID=A.ProductID

用来同步两个表的数据!

Oralce和DB2都支持的语法:

UPDATEASET(A1, A2, A3)=(SELECTB1, B2, B3FROMBWHEREA.ID=B.ID)

MS SQL Server不支持这样的语法,相对应的写法为:
UPDATEASETA1=B1, A2=B2, A3=B3FROMALEFTJOINBONA.ID=B.ID

个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:
UPDATEASETA1=B1, A2=B2, A3 = B3FROMA, BWHEREA.ID=B.ID

在Oracle和DB2中的写法就比较麻烦了,如下:

UPDATEASET(A1, A2, A3)=(SELECTB1, B2, B3FROMBWHEREA.ID=B.ID)
WHEREIDIN(SELECTB.IDFROMBWHEREA.ID=B.ID)

免责声明:文章转载自《update语法汇总》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇months_between()用法eAccelerator 配置参数详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CentOS 命令大全

系统 # uname -a               # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue   # 查看操作系统版本# cat /proc/cpuinfo      # 查看CPU信息# hostname               # 查看计算机名# lspci -tv              # 列...

svn基本命令使用

1、svn help:可以通过该命令查看svn的所有操作命令,包括命令的缩写 2、首先需要从svn库中checkout对应的项目:  (1)svn项目路径为svn://192.168.1.1/myproject/doc,将项目路径下的文件checkout到/home/test目录下,若没有/home/test路径会自动创建,同时只将doc中的子目录和文件...

SQL SERVER锁(LOCK)知识及锁应用

提示:这里所摘抄的关于锁的知识有的是不同sql server版本的,对应于特定版本时会有问题。 一 关于锁的基础知识 (一). 为什么要引入锁 当多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: ◆丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 ◆脏读 A用户修改了数据,随后B用户又...

MySQL触发器Trigger实例篇

定义: 何为MySQL触发器? 在MySQL Server里面也就是对某一个表的一定的操作,触发某种条件(Insert,Update,Delete 等),从而自动执行的一段程序。从这种意义上讲触发器是一个特殊的存储过程。下面通过MySQL触发器实例,来了解一下触发器的工作过程吧! 一、创建MySQL实例数据表: 在mysql的默认的测试test数据库下,...

SpringBoot(3):SpringData 数据访问

一. 简介 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架;其主要目标是 使得对数据的访问变得方便快捷。对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库)。Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库 Sping Data 官网:https://spri...

Oracle表中一行记录被锁(行锁,表锁,死锁)

表现形式:可以向表里面save新数据,但是无法跟新某一条数据,update的时候就一直在等待。 Oracle锁表查询和解锁方法 数据库操作语句的分类DDL:数据库模式定义语言,关键字:createDML:数据操纵语言,关键字:Insert、delete、updateDCL:数据库控制语言 ,关键字:grant、removeDQL:数据库查询语言,关键字:s...