|
|
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, 这就不是我想要的结果了,有什么 办法可以避免吗?
|
|