0

解决方案: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 别名为 a here?我们不需要像这样的选择查询中的 ASSELECT E.FirstName FROM Employee AS E;吗?

有什么不同?

4

3 回答 3

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 。

于 2012-04-11T15:58:21.260 回答
2

它们是同一个东西,要么用“as”别名,要么不带别名。见: http ://www.tsqltutorials.com/aliases.php

于 2012-04-11T15:58:35.283 回答
-1

在为要选择的列名取别名时需要 AS,但在 FROM 子句中为表名取别名时不需要。而且,不,在那一秒更短的 SELECT 中您不需要 AS。

除了“这是语言的定义语法”之外,没有“为什么”。我发现试图对语言设计者的秘密隐藏动机进行事后猜测不会有任何好处。

于 2012-04-11T15:58:29.153 回答