来自 数据库 2020-05-07 17:33 的文章
当前位置: 网上澳门金莎娱乐 > 数据库 > 正文

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

update情况

  1. delete from table... 这其中table不能使用别名

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

Sql代码  
      delete from `t_goods` where fi_id in (select * from ( select fi_id from `t_goods` where fs_num is null and fs_name is null and fs_type is null andfs_using is null and fs_lifetime is null) b)  

DELETE FROM TABLEA A WHERE A.FIELD1=10 DELETE TABLEA FROM TABLEA A WHERE A.FIELD1=10 DELETE FROM TABLEA WHERE TABLEA.FIELD1=10

     select a.* from student a where a.id in (1,2);(执行成功)

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

select可以取别名,delete不能。

执行失败

    delete from student a where a.id in (1,2);(执行失败)

执行成功所以要做通用的程序,做好不使用别名


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

  1. mysql delete from where in 时后面 的查询语句里不能加where条件

两点经验:

针对“同一张表”这个限制,撇开效率不谈,多数情况下都可以通过多加一层select 别名表来变通解决,像这样

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

 

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

    

结论:

 

http://www.bkjia.com/Mysql/443421.htmlwww.bkjia.comtruehttp://www.bkjia.com/Mysql/443421.htmlTechArticleselect可以取别名,delete不能。 1.使用mysql进行delete from操作时,若子查询的 FROM 字句和更新/删除对象使用同一张表,会出现错误。 mysql DEL...

 

本文由网上澳门金莎娱乐发布于数据库,转载请注明出处:sqlserver中delete、update中使用表别名和oracle的区别

关键词: