关于Update在不同数据库的使用

运维 数据库运维
SQL语法难吗?其实不难。但是也有忘记的可能,因此作者将它写下来,以备不时之需。现在分享给大家,一起来看看吧。

1、单表更新多个字段

DB2:

  1. update t1 set (id, name)=('1','2'where name like 'kiss%'--正确运行  
  2. update t1 set id='1',name='2' where name like  'kiss%'--正确运行 

MSSQL:

  1. update t1 set (id, name)=('1','2'where name like 'kiss%'----报: '(' 附近有语法错误。  
  2. update t1 set id='1',name='2' where name like  'kiss%'--正确运行 

2、多表连合更新

DB2:

  1. update t1 set id=(select id from t2 where t2.name like  'kiss%'--正确运行  
  2. update t1 set (id,name)=(select id,name from t2 where t2.name like  'kiss%'--正确运行  
  3. update t1 a set id=b.id from t2 b where b.id='dkdkd'--sql遇到非法符号 

MSSQL:(update tablename 别名,这种写法是不对的)

  1. update t1 set id=b.id, bid=b.bid from t2 b where b.bid='dkdkd' --正确运行  
  2. -----如果要用别名,则也要把t1放在from后面------  
  3. update a set a.id=b.id, a.bid=b.bid from t1 a, t2 b where a.id=b.id and b.bid='dkdkd' --正确运行(别名放在from后) 

综上,更新多个字段,有两种写法,分别是

  1. update tname set (a1, a2...)=(select a1, a2...from...)--DB2写法  
  2. --------------------华丽分割线----------  
  3. update tname set a1=b.a2, a2=b.a2...from b...   --mssql 写法 

Oracle下面跟db2差不多,环境没搭建好,就不测试了,要用的时候再参考以上两种写法.

简单在mysql下测试,结果如下,mysql与mssql都支持 set a1=b.a2, a2=b.a2...from b. 的写法

  1. mysql> update order2 set id=1,price=2 where ordernum='kdkdk' 
  2.     -> ;  
  3. Query OK, 0 rows affected (0.00 sec)  
  4. Rows matched: 0  Changed: 0  Warnings: 0  
  5.  
  6. mysql> update order2 set (id, price)=(1,2) where ordernum='dkdkd' 
  7.     -> ;  
  8. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that  
  9. corresponds to your MySQL server version for the right syntax to use near '(id,  
  10. price)=(1,2) where ordernum='dkdkd'at line 1 

原文链接: http://shoushou2001.iteye.com/blog/1110350

【编辑推荐】

  1. 客户的一次疏忽,DBA的一次噩梦
  2. 单数据库vs多数据库,单实例vs多实例 效率测试
  3. 一个笔记告诉你,从Java存储转到SQL存储的过程
  4. Oracle数据库日常维护知识总结
责任编辑:艾婧 来源: Java place
相关推荐

2009-04-30 09:28:05

SynonymOpenquerySQL Server

2010-08-31 16:59:12

DB2UPDATE

2011-07-18 16:56:12

Sqlite数据库Update语句

2011-08-24 13:10:48

MongoDBUpdate

2011-05-18 10:36:21

数据库数据导入

2011-08-04 13:07:59

数据库查询TOP子句

2017-05-25 10:23:13

数据a表b表

2019-12-26 17:25:22

数据库设计技术

2010-05-12 18:48:31

MySQL数据库

2011-08-23 15:16:54

OracleMySQL

2011-08-04 15:55:25

SQL Server数

2010-08-18 17:45:36

DB2数据库

2011-08-03 14:02:02

数据库连接ACCESS

2010-05-10 18:05:09

2018-08-24 13:58:13

数据库MySQL备份

2013-05-21 10:06:11

数据库查询优化

2017-10-18 19:12:24

数据库Oracle安全管理

2011-03-28 12:33:09

SQL Server数据库链接

2010-04-23 15:34:41

Oracle 数据库

2010-06-30 16:48:19

SQL Server数
点赞
收藏

51CTO技术栈公众号