关于update语句在不同数据库中的差别--[转贴]

转载 2006年06月01日 17:42:00

Oralce和DB2都支持的语法:
UPDATE A 
 SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
MS SQL Server不支持这样的语法,相对应的写法为:
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的写法:
UPDATE A 
    SET A1 = B1, A2 = B2, A3 = B3
    FROM A, B WHERE A.ID = B.ID
在Oracle和DB2中的写法就比较麻烦了,如下:
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)
posted on 2004-07-23 20:06 温少 阅读(4106) 评论(16)  编辑 收藏 

评论
# re: 关于Update语句在不同数据库中的差别    
没错 t-sql对标准sql进行了扩充和改造 
比如说top n,虽然功能比limit差,但很多时候用起来还是比较好的 

说到update 这样更能有代表性 
update a 
set a.a1 = b.b1,a.a2 = c.c2 
from a 
inner join b on ... 
inner join c on ... 

连接表越多,则标准sql写起来越麻烦 
2005-06-17 08:56 | Garfield 
# re: 关于Update语句在不同数据库中的差别    
顺便提个问题: 
有两个表t1,t2,数据内容如下: 
t1: 

f1 f2 
101 100 
102 200 
103 300 


t2: 

f1 f2 
101 111 
102 222 

如果运行如下语句: 
update t1 set f2=(select f2 from t2 where t1.f1=t2.f1) 

t1里面f1=101,102的f2被更新为111,222。这是我想要的结果, 
f1=103的f2被更新为null, 这就不是我想要的结果了,有什么 
办法可以避免吗? 

问题提的很好!

作者: JavaResearch

【转贴】详细解读Express版与付费版本的差别

在此列出Express版的「十不一没有」,由前3个「不」即可发现Express版锁定在初学者及非商业用途。尽管如此,Visual Studio 2005 Express仍然是适合广大学生,软件开发爱好...

Oracle和mysql数据库中sql语句的一些细微差别

大家都知道,在企业的数据库应用中,就属Oracle和mysql数据库应用的最为广泛,oracle数据库通常用于大型企业的数据库构建,而中小型企业大多会选择mysql数据库,其运行和维护成本都较小,那么...

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

sql语法虽然简单,但也有忘记的可能,写下来,以备不时之需。 1、单表更新多个字段 DB2:     update t1 set (id, name)=('1','2') where nam...
  • Neetgo
  • Neetgo
  • 2013年05月01日 16:41
  • 502

关于Sqlite数据库Update语句的一点介绍

sqlite数据库不支持update……from语句,但可以用两种不同的方法来替代它,本文主要介绍了这一过程,接下来就让我们一起学习吧。 AD: Sqlite数据库中的Upd...

批量更新数据库数据(SQL update select语句)

QL update select语句   最常用的update语法是: UPDATE SET = , SET =   www.2cto.com   如果我的更新值Value是从一条...

MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

MySQL数据库insert和update语句 引:用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之意,就是对数...

关于Sqlite数据库Update语句的一点介绍

转自:http://database.51cto.com/art/201107/276597.htm Sqlite数据库中的Update语句,你能了解多少呢?因为...
  • cuboo
  • cuboo
  • 2013年08月30日 18:14
  • 478

Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库中的用法

在 MySQL 3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更改。  如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持),记录行将以指定的次...

数据库中Select For update语句的解析

——————————— Oracle —————————————————– Oracle 的for update行锁键字: oracle 的for update行锁   SELECT…FOR...

MySQL数据库insert和update语句

MySQL数据库insert和update语句 引:用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之意,就是对数据...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于update语句在不同数据库中的差别--[转贴]
举报原因:
原因补充:

(最多只允许输入30个字)