T SQL - 为什么这里不需要AS?

时间:2012-04-11 15:52:33

标签: sql-server tsql

解决方案:https://stackoverflow.com/a/439768/857994提供以下代码:

    DELETE TableA 
    FROM TableA a
    INNER JOIN
    TableB b on b.Bid = a.Bid
    and [my filter condition]

我的问题是:

为什么我们不需要在FROM中将AS替换为TableA到此处?我们不会在SELECT E.FirstName FROM Employee AS E;等选择查询中需要AS吗?

有什么区别?

3 个答案:

答案 0 :(得分:3)

“AS”关键字有可选项。在SELECT查询中也不需要它。 (试试吧!)

以下是MSDN中“FROM”的一些语法:

[ FROM { <table_source> } [ ,...n ] ] 
<table_source> ::= 
{
    table_or_view_name [ [ AS ] table_alias ] [ <tablesample_clause> ] 
    ...
}

如您所见,[ AS ]位于括号中,这意味着它是可选的。你从不需要添加它,虽然我想有些人可能认为它使查询更具可读性。我不同意,但这是个人偏好(或DBA的个人偏好)。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms177634.aspx

答案 1 :(得分:2)

它们是相同的东西,或者用“as”或“out”别名。看到: http://www.tsqltutorials.com/aliases.php

答案 2 :(得分:-1)

在对要选择的列名称进行别名时需要AS,但在FROM子句中对表名别名时则不需要AS。而且,不,你不需要那个第二个,更短的SELECT。

除了“这是语言的定义语法”之外,没有“为什么”。我发现尝试再次猜测语言设计者的秘密隐藏动机会导致不好。

相关问题