sqlserver中delete、update中使用表别名和oracle的区别
程序员文章站
2023-11-24 08:40:34
昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计。心说,不对啊,是重新生成记录后才分析的啊。难道忘了delete了?查代码,发现有删除语句。于...
昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计。心说,不对啊,是重新生成记录后才分析的啊。难道忘了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中delete、update中使用表别名和oracle的区别
-
sqlserver和oracle中对datetime进行条件查询的一点区别小结
-
oracle中drop、delete和truncate的区别讲解
-
dual表在oracle,mysql和hive中的使用实例
-
Oracle数据库中truncate命令和delete命令的区别
-
sqlserver和oracle中对datetime进行条件查询的一点区别小结
-
Oracle数据库中truncate命令和delete命令的区别
-
oracle中drop、delete和truncate的区别讲解
-
dual表在oracle,mysql和hive中的使用实例