概述
http://database.51cto.com/art/201009/227874_all.htm
在select中使用表别名很多人都知道,但是在Sql Update中使用表别名可能知道的人就没那么多了,下面就为您介绍这种Sql Update语句使用表别名的方法,供您参考。
AD:2013云计算架构师峰会课程资料下载
使用Sql Update语句,同样可以使用表别名,下面就将为您介绍Sql Update语句使用表别名的方法,希望对您学习Sql Update语句有所启迪。
在编写Sql脚本时通过表别名可以大大缩减Sql代码,同时表别名也是解决同表多次引用的手段之一。在select中使用表别名大家应该都很熟悉了:
- select * from TableA as A inner join TableB as B on A.Key1 = B.Key1
但是在Sql Update中使用表别名可能就没那么多人知道了。
- update T
- set T.Key1 = 'xxxx'
- from TableA T
这些天在写Sql Update语句脚本的时候需要引用两次同个表对象,如果直接像下面这样引用两次TableA则会抛出“The multi-part identifier ‘TableA.Index’ could not be bound”的错误。这是因为Sql引擎无法知道你在where子句中的TableA到底指的是要Update的表还是from后面的表。
- update TableA
- set TTableA.NextKey = T.Key
- from TableA T
- where T.Index = TableA.Index + 1
如果不对Update后面的TableA使用别名的话,我们只能通过以下方法来实现。
- update TableA
- set TTableA.NextKey = T.Key
- from
- (
- select * from TableA
- )T
- where T.Index = TableA.Index + 1
使用别名可以得到更简洁的写法:
- update T1
- set T1.NextKey = T2.Key
- from TableA T1, TableA T2
- whereT2.Index = T1.Index + 1
【编辑推荐】
Sql Server视图的概念
使用SQL查询连续号码段的方法
实现子孙树查询的经典SQL语句
查询表的字段名的sql语句写法
SQL查询最大最小值的示例
-
SQL Server中Delete语句表名不能用别名
-
昨天,无意中发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计。心说,不对啊,是重新生成记录后才分析的啊。难道忘了 DELETE 了?查代码,发现有删除语句。
于是在查询分析器中执行,报错。反复试几次,明白了,Delete From 不认表名别名!回头想下,当初程序改完后主要是在Oracle中测的,SQLServer 一直没细测。
之所以要用别名,是因为 where 条件中需要用到子查询写一些条件,下面不写那么复杂,仅说明一下问题。
结论:
delete from TABLEA A where A.FIELD1=10 (ORACLE适用)
delete TABLEA from TABLEA A where A.FIELD1=10 (SQLSERVER适用)
delete from TABLEA where TABLEA.FIELD1=10 (Ora/SQL均适用)
最后
以上就是开朗手套为你收集整理的Sql Update语句使用表别名的方法SQL Server中Delete语句表名不能用别名的全部内容,希望文章能够帮你解决Sql Update语句使用表别名的方法SQL Server中Delete语句表名不能用别名所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复