sql-server - SQL Server 中的别名

标签 sql-server

这两个陈述是等价的吗?

UPDATE Table1 SET Field1=( 
 SELECT Field2 FROM Table2 
 WHERE Table1.ID=Table2.ID
) 
FROM Table1 
WHERE Field1 is null



UPDATE t SET Field1=( 
 SELECT Field2 FROM Table2 
 WHERE t.ID=Table2.ID
) 
FROM Table1 t
WHERE Field1 is null

我正在尝试减少混叠的数量。
我觉得给语句添加别名只会增加另一个表名,以便在心理上进行跟踪。

我担心的是,在示例 1 中,由于我没有使用别名,它将更新整个 table1,而不是在 WHERE Field1 为 null 上进行过滤。

需要别名时的经验法则是什么?

最佳答案

是的,它们是等价的,因为别名永远不会改变语句的效果,只会改变它的可读性或解决歧义。

但我会这样做:

UPDATE Table1 
SET Field1 = Table2.Field2 
FROM Table1 
INNER JOIN Table2 ON Table1.ID=Table2.ID
WHERE Table1.Field1 is null

或这个
UPDATE t1
SET Field1 = t2.Field2 
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.ID=t2.ID
WHERE t1.Field1 is null

使用别名来提高可读性。我个人喜欢为我的每个表使用短别名(1-3 个字符),总是尽可能为相同的表使用相同的别名,以便随着时间的推移提高可读性。

关于sql-server - SQL Server 中的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446008/

相关文章:

sql-server - SQL Server XML XQuery 选择 where 子句属性

sql-server - SSRS 2008 导出到 Microsoft Word 不包括页眉和页脚

sql - 这种 try_convert 用法有什么问题?

sql-server - MS SQL 2012 插入触发器 : Insert all rows from a table

sql-server - 一个 SQL Server 中的表格模型和多维模型,这怎么可能?

sql - 从 SQL Server 表中随机选择 n 行

c# - 如何防止自引用表变成循环

sql - 日期范围内的事件记录计数

sql-server - 有没有一种优雅的方法来跟踪 SQL Server 2008 中一个表的所有列的修改

sql-server - 我可以使用参数化查询从 SQL Server VarBinary 列返回字节数组吗?