2017-05-02 59 views
-2

當我執行下面的查詢:「不明確的列名」

select ProjectID, UserID, * 
from UserDetails 
where ProjectId='123456' 
order by UserID 

我得到「不明確的列名用戶名」作爲錯誤

然而,當我寫的查詢相同:

select ProjectID, UserID, * 
from UserDetails UD 
where ProjectId='123456' 
order by UD.UserID 

它不會引發任何錯誤。

有人可以解釋爲什麼會發生這種情況嗎?

+3

'*'擴展到所有列,其中包括另一個用戶ID實例。 – jarlh

+0

您正在選擇列兩次...顯式地通過UserID,隱式地通過* –

+0

@bub我明白你的觀點。但是在第二個查詢中也是如此。對? – Darshan

回答

1

這是因爲您選擇了兩次列。使用通配符*選擇所有列。第二個查詢不會像您注意到的那樣引發錯誤,因爲您已經混淆了一組字段,因此與另一組字段沒有重疊。

0

爲了快速說明,UD.UserId的順序在select中創建了別名。這就是爲什麼第二個查詢不顯示錯誤。因爲該表已被指定。

+0

不完全。這裏的別名是來自UserDetails UD的UD – warsong