2014-02-05 63 views
0

爲什麼以下查詢是有效的選擇?爲什麼在表名有效之後是隨機的String/varchar?

SELECT * from arelation somerandomtext; 

arelation的內容並不重要,它只是HAST是現有視圖/表。

它返回正確的結果,分別輸出沒有somerandomtext的選擇。

爲什麼此查詢不會拋出錯誤/異常,是否沒有關鍵字(Group By,limit ...)檢查?

+7

這就是所謂的表的別名,是這是SQL語言的基礎部分 - 例如需要進行自連接。它們在Postgres文檔中描述(http://www.postgresql.org/docs/9.2/static/queries-table-expressions.html)。 –

+0

我總是使用(d)帶有「as」的別名函數,所以我沒有想到這一點。 – Akkusativobjekt

+1

我總是使用'as'作爲列別名,而不使用表別名 - 可能是我生命中早些時候(Oracle不允許''作爲'表別名')的影響。 –

回答

0

它的別名

select c.id, c.* 
from products c 

是有效的語法,因爲它允許從表連接到自身

select c.id, p.id 
from products c inner join products p on p.id = c.id 
相關問題