如您所知,如果我们选择两个表而我们具有相同的列名,则会收到错误:
'不明确的列名'ColumnName''
我已经知道设置别名确实解决了这个问题.
但是,似乎列的名称不在 SELECT语句中,那么它适用于SQL Server 2008 R2(在我的数据库中).兼容级别设置为100.
所以下面的陈述是有效的:
SELECT t1.ID
FROM Table1 t1
JOIN Table2 t2 ON (t2.ID = t1.ID)
ORDER BY ID
Run Code Online (Sandbox Code Playgroud)
但显然在其他情况下,上述声明确实会返回错误(我知道这是因为它发生在客户的网站上).同样在SQL Fiddle上,它在SQL Server 2008和SQL Server 2012上都返回错误.
有人知道为什么或在什么情况下上面的查询仍然返回错误?
我的猜测是SQL Server上的版本或设置问题.
注意:链接的副本确实解决了我的问题.兼容级别设置为80.将其更改为100可解决问题.
每当你的SELECT,JOIN你将得到这个错误,其中,基团,具有不完全限定列与有超过1列与您加入到这个名字.
ORDER BY Name示例有效,因为ORDER BY将允许您使用SELECT中列的名称,例如,这将在ORDER BY中起作用,但不能在SQL语句中的任何其他位置起作用.
SELECT t1.ID, t1.Name AS [CrazyName]
FROM Table1 t1
JOIN Table1
ON Table2 t2 (t2.ID = t1.ID)
ORDER BY [CrazyName]
Run Code Online (Sandbox Code Playgroud)