以下代碼:爲什麼這個語法無效?
SELECT JaguarStartupTime, CPU, AmountOfRam, UpdatedOn, *
FROM dbo.MachineConfiguration
WHERE ServerName = 'WashingtonDC01'
AND UpdatedOn > '11/21/2012'
ORDER BY JaguarStartupTime DESC
導致錯誤:Ambiguous column name 'JaguarStartupTime'
。
但是,刪除ORDER BY
使它工作。此外,添加前綴ORDER BY
子句表,如下圖所示,使得工作過:
SELECT JaguarStartupTime, CPU, AmountOfRam, UpdatedOn, *
FROM dbo.MachineConfiguration
WHERE ServerName = 'WashingtonDC01'
AND UpdatedOn > '11/21/2012'
ORDER BY dbo.MachineConfiguration.JaguarStartupTime DESC
這從來沒有對我有意義。有人可以解釋嗎?
唉!你快了! ;-)刪除了我的答案和+1。 –
服務器知道它是同一列。例如,如果我將JaguarStartupTime添加到WHERE子句中,則儘管存在兩個相同的列,但它很樂意過濾它。 – AngryHacker
@AngryHacker - 'WHERE'在'FROM'之後但在'SELECT'之前處理。 'ORDER'出現在'SELECT'後面。 (所有這些命令都是「好像」 - 只要結果相同,引擎可以自由地重新排序這些操作) –