关于update语句在不同数据库中的差别--[转贴]
来源:互联网 发布:中小型企业网络组建 编辑:程序博客网 时间:2024/05/16 04:38
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
- 关于update语句在不同数据库中的差别--[转贴]
- 关于update语句在不同数据库中的差别
- 关于Update语句在不同数据库中的差别
- 关于Update语句在不同数据库中的差别
- Update语句在不同数据库中的差别
- 关于Update在不同数据库的使用
- 关于update在不同数据库的使用
- 关于update语句在sqlserver和Access中的对比
- 关于SQL中的Update语句
- oracle数据库中的update语句的用法
- 不同表update语句
- 关于SQL递归查询在不同数据库中的实现方法
- 关于SQL递归查询在不同数据库中的实现方法
- jndi的配置在不同服务器中的差别
- css盒子模型 在不同浏览器中的差别
- Linux 一条 find 命令 在不同系统中的略微差别
- 测试各数据库下update语句语法不同的测试报告
- SQL语句查询表中的第一条记录在不同数据库中的不同之处
- 如何进行ArcIMS的二次开发
- DataGrid问题汇总
- 【MVP】 Wenzhong Huang 北大硕士,微软MVP,微软嵌入式讲师,MCSE
- 中英文操作系统差异问题汇总
- 升级现有的 ActiveX 控件
- 关于update语句在不同数据库中的差别--[转贴]
- linux0.11缓冲处理过程及一点块设备的基础知识
- 纪念胡新宇君
- 今天帮美工写个很简单的javascript菜单效果,在ie6, firefox下测试通过,整理了下代码,贴出来。
- 如何使用MD5技术加密
- UltraEdit 使用技巧
- SENTINEL Delphi/VB envelope unpacker 1.0 [Snow Panther]
- 强制浏览器刷新页面图片
- 引用计数错在哪里?