我奶油手指在SQL Server 2000中的查詢,並在表名中間加了一段:爲什麼SQL Server 2000將SELECT test。*和SELECT t.est。*設置爲相同?
SELECT t.est.* FROM test
相反的:
SELECT test.* FROM test
和查詢仍然完美執行。即使SELECT t.e.st.* FROM test
執行沒有問題。
我試過SQL Server 2008中查詢失敗的錯誤(錯誤:列前綴與查詢中使用的表名或別名不匹配)。出於純粹好奇心的原因,我一直在試圖弄清楚SQL Server 2000如何處理表名,以便允許黃油指針查詢運行,但迄今爲止我還沒有多少運氣。
任何sql大師都知道爲什麼SQL Server 2000運行查詢沒有問題?
更新:查詢似乎不管用(如企業管理,SSMS,OSQL)和Jhonny指出它下面的怪異甚至還可以當你嘗試的界面的工作:
SELECT TOP 1000 dbota.ble.* FROM dbo.table
如果我不得不冒險猜測是因爲SQL將您的查詢作爲建議。爲確保以最有效的方式返回結果,它會查看您的查詢並對其進行更改,使其更好地工作。在你的例子中,別名是不重要的,因爲它是一個* FROM表...雖然我沒有辦法證明這一點(因此評論和不回答) 你可以嘗試做一個聯接,所以你有2個表,並測試它嗎?如果有可能模糊,它可能會開始關注更多。 – Shaded 2010-06-04 14:16:45
你現在也讓我好奇!我沒有一個實例SQL Server 2000交給我,但我很感興趣...... – AdaTheDev 2010-06-04 14:17:31
@Shaded,我想你可能已經遇到了這個解決方案,但它似乎能夠工作,即使在查詢中存在多個表時。這個查詢也沒有問題:'SELECT t.est。*,t.est2。* FROM test,test2'。我也嘗試了內部加入一些表格以確保運行良好。 – 2010-06-04 14:22:50