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

  • A+
所属分类:MSSQLSERVER


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


执行成功

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


  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: