sqlserver中delete、update中使用表别名和oracle的区别_Mssql数据库教程

编辑Tag赚U币
教程Tag:DELETEupdate添加

推荐:Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合,接下再看看对grouping的解释,感兴趣的朋友可以参考下哈

昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计。心说,不对啊,是重新生成记录后才分析的啊。难道忘了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

执行成功

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

分享:SQL Server游标的使用/关闭/释放/优化小结
游标打破了这一查询的思考是面向集合的规则,游标使得我们思考方式变为逐行进行,接下来为大家介绍下游标的使用感兴趣的朋友可以参考下哈,希望可以帮助到你

来源:模板无忧//所属分类:Mssql数据库教程/更新时间:2013-04-23
相关Mssql数据库教程