关于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数据库,其运行和维护成本都较小,那么...

mysql数据库insert、delete、update语句总结

1)DELETE语句语法 单表语法: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name     [WHERE where_defini...

数据库update语句中where后跟IN和EXISTS效率测试

数据库 update后where语句中的IN、EXISTS的效率测试

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

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

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

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

MySQL数据库insert和update语句

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

转贴:SQLite数据库应用:收集SQLite中的时间日期函数

SQLite数据库应用:收集SQLite中的时间日期函数 挖客webmaster 发表于2009-2-22 1:12:19 来源:编辑整理  这是我学习SQLite时做的笔记,参考并翻...

linux高负载下彻底优化mysql数据库【转贴】

同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或...

TomCat6.0+oracle数据库连接池配置(转贴:冷千山的BLOG)

TomCat6.0数据库连接池配置有几种方式,在这里我介绍一种常用的方法供大家参考: 配置过程分成三个步骤来完成: 第一步:在TomCat6.0的目录下找到context.xml配置文件。(例如:C:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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