我奶油手指在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