中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > JDK核心API
关于update语句在不同数据库中的差别
作者:未知 时间:2005-07-24 21:15 出处:JR 责编:chinaitpower
              摘要:关于update语句在不同数据库中的差别
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写起来越麻烦 
2004-07-23 20:29 | progame 
# re: 关于Update语句在不同数据库中的差别    
我的post中的还不是使用标准SQL,标准SQL-92似乎更麻烦 :( 
2004-07-23 22:05 | 温少 
# re: 关于Update语句在不同数据库中的差别    
感谢你的经验,已经学会了 
2005-01-27 14:42 | www 
# re: 关于Update语句在不同数据库中的差别    
谢谢!我又解决了一个问题,我已经查了一天了,终于查到了。 
2005-03-02 17:17 | 哈哈哈 
# re: 关于Update语句在不同数据库中的差别    
帮我们解决了问题,谢谢 
2005-03-02 17:26 | 亮 
# re: 关于Update语句在不同数据库中的差别    
帮我们解决了问题,谢谢 
2005-03-02 17:26 | 亮 
# re: 关于Update语句在不同数据库中的差别    
为这个问题郁闷了好久,谢谢 
2005-03-29 09:48 | longylongy 
# re: 关于Update语句在不同数据库中的差别    
谢谢 
2005-04-10 00:23 | eafy 
# re: 关于Update语句在不同数据库中的差别    
很有用,谢谢 
2005-04-19 10:32 | song 
# re: 关于Update语句在不同数据库中的差别    
我又遇到新问题,oracle是否支持子串的比较?如某个表的一个字段与另一个表的某个字段的子串作对比,我试了一下,好象不行,郁闷...... 
2005-04-19 18:07 | 芳 
# re: 关于Update语句在不同数据库中的差别    
好东西,不过怎么我在oracle update好慢的呢? 

我就从3w记录更新21条。。。等不到 

后来我在21条记录更新21条记录,要22秒 
2005-04-24 15:41 | 阿心 
# re: 关于Update语句在不同数据库中的差别    
@阿心 
Oracle的写法当然慢,你要快的话,写存储过程吧 
2005-04-29 00:21 | 温少 
# re: 关于Update语句在不同数据库中的差别    
那用hibernate写sql数据库中的update语句怎么写? 

2005-04-29 13:24 | 学生 
# re: 关于Update语句在不同数据库中的差别    
那informix中呢,有人知道吗 
2005-06-09 09:51 | 小顾 
# re: 关于Update语句在不同数据库中的差别    
很精辟,好! 
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, 这就不是我想要的结果了,有什么 
办法可以避免吗? 
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有