2012-04-11 58 views
0

解決辦法:https://stackoverflow.com/a/439768/857994給出了下面的代碼:T SQL - 爲什麼這裏不需要AS?

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

我的問題是:

爲什麼我們不需要一個AS在FROM到別名表A到這裏?我們不需要像SELECT E.FirstName FROM Employee AS E;這樣的選擇查詢中的AS嗎?

有什麼區別?

+0

「難道我們不會 - 」我不知道,也許我們可以試試? – AakashM 2012-04-11 15:54:43

+0

老實說,我被困在沒有管理權限的計算機上,直到IT給我(新工作)。所以,#1我不能,#2不會告訴我是否有差異的原因,爲什麼有一個首選項,如果它工作:) – 2012-04-11 15:55:47

+0

爲什麼你需要管理員權限來運行SELECT語句? – 2012-07-31 08:39:56

回答

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瞭解更多詳情。

+0

謝謝大家:) – 2012-04-11 16:57:25

-1

當別名選擇列名時,您需要一個AS,但是在FROM子句中混疊表名時不需要使用AS。而且,不,你不會在那秒需要AS,更短的SELECT。

除此之外,沒有「爲什麼」,除了「這是語言的定義語法」。我發現,試圖猜測語言設計師的祕密動機並不好。

+0

這個。您在SELECT語句中需要一列,而不是在FROM的表中。 – 2012-04-11 16:01:22

+1

「這」,不幸的是,這是不正確的。 [SELECT子句的文檔](http://msdn.microsoft.com/en-us/library/ms176104.aspx)清楚地表明,列別名的「AS」是** optional **。嘗試一下。 – AakashM 2012-04-11 16:08:15

+0

對於列別名,您絕對不需要「AS」。這些工作很好:'SELECT Column1 alias1 FROM MyTable;'或'SELECT alias1 = Column1 FROM MyTable;'。 – 2012-04-11 16:18:27