簡體   English   中英

SQL Server 2012中的列名稱錯誤

[英]Ambiguous column name error in SQL Server 2012

請參閱以下查詢。

select UserStatus,UserStatus from ((Select 'Active' as UserStatus) 
 union (Select 'Inactive' as UserStatus))a order by UserStatus  

錯誤:

Msg 209, Level 16, State 1, Line 3
Ambiguous column name 'UserStatus'

解:

ALTER DATABASE VCarePortal
SET COMPATIBILITY_LEVEL = 100

90 = SQL Server 2005`enter code here`
100 = SQL Server 2008 and SQL Server 2008 R2
110 = SQL Server 2012.

我嘗試了有關兼容性級別模式。 但仍然我得到模棱兩可的錯誤。

請刪除一個UserStatus並嘗試:

select UserStatus from 
(
    (Select 'Active' as UserStatus) 
    union 
    (Select 'Inactive' as UserStatus)
)a order by UserStatus

您選擇同一列兩次,然后刪除其中一列,從而解決了該問題。 無論如何,您都不需要兩次,因為聯合的每個選擇僅返回一列。

select UserStatus from ((Select 'Active' as UserStatus) 
 union (Select 'Inactive' as UserStatus))a order by UserStatus 

在訂購同一列時,這里會產生歧義,因此sql引擎無法理解需要訂購哪一列。

因此,使用以下查詢將解決您的問題。

-- Order by 1 means order with first column in selection
select UserStatus, UserStatus 
from (
(Select 'Active' as UserStatus) 
 union 
 (Select 'Inactive' as UserStatus)
)a order by 1 


-- Or remove duplicate column from selection.
select UserStatus
from (
(Select 'Active' as UserStatus) 
 union 
 (Select 'Inactive' as UserStatus)
)a order by UserStatus  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM