数据库 
首页 > 数据库 > 浏览文章

sqlserver中delete、update中使用表别名和oracle的区别

(编辑:jimmy 日期: 2025/1/9 浏览:3 次 )

昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计。心说,不对啊,是重新生成记录后才分析的啊。难道忘了DELETE了?查代码,发现有删除语句。于是在查询分析器中执行,报错。反复试几次,明白了,Delete From不认表名别名!回头想下,当初程序改完后主要是在Oracle中测的,SQLServer一直没细测。

之所以要用别名,是因为where条件中需要用到子查询写一些条件,下面不写那么复杂,仅说明一下问题。

结论:

(ORACLE适用)    DELETE FROM TABLEA A WHERE A.FIELD1=10
(SQLSERVER适用) DELETE TABLEA FROM TABLEA A WHERE A.FIELD1=10
(Ora\SQL均适用) DELETE FROM TABLEA WHERE TABLEA.FIELD1=10

两点经验:

1、测试要全面;
2、要自信,写程序时考虑的情况挺全的。

update情况

update T_report a  
      set a.status='1'
   where a.report_Seq=1234

执行失败

update a
      set a.status='1'
    from T_report a
where a.report_Seq=1234

执行成功

所以要做通用的程序,做好不使用别名

上一篇:真正高效的SQLSERVER分页查询(多种方案)
下一篇:SSB(SQLservice Service Broker) 入门实例介绍
一句话新闻
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。