关于update语句在不同数据库中的差别--[转贴]
2006-06-01 17:42
344 查看
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 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语句在不同数据库中的差别(zz)
- Update语句在不同数据库中的差别
- 关于Oracle和SQLServer数据库在.net中拼接数据库语句的不同
- 两个简单的数据库操作函数,避免对不同的表结构使用不同的update语句
- 各数据库关于显示成男女各有不同的sql语句,有没有什么统一的标准写法呢???
- 数据库关于同一张表不同条件取出数量的横向添加sql语句
- 关于数据库DBM不同造成的SQL语句差异
- 关于update在不同数据库的使用
- 测试各数据库下update语句语法不同的测试报告
- 笔记:关于数据库中返回唯一的不同值:SELECT DISTINCT 语句
- 【转贴】不同数据库查询前几条记录的SQL语句
- 关于Oracle 数据库的各种不同版本的差别
- 关于Update在不同数据库的使用
- 【转载】关于数据库里cascade的用法,在MySQL和Hibernate是不同的