解决方案: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吗?
有什么区别?
答案 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。
除了“这是语言的定义语法”之外,没有“为什么”。我发现尝试再次猜测语言设计者的秘密隐藏动机会导致不好。