2012-08-03 42 views
0

我的查詢如下所示,幷包含在其中一個子查詢:SQL錯誤只有一個表達式

@catid int 

AS 
    Select Top(1) 
    ID, 
    Title, 
    Description, 
    NewsType, 
    CreateTime, 
    ISNULL((ImageURL2),'no-pic') As [News-Photo], 
    ISNULL(convert(nvarchar(50),ImageTime),'no-date') As [News-Date], 
    (select top(5) id,title From News) as [SpLinks] 
    From News 
    Where (NewsType = @catid) and (AllowShow = 'True') 
    order by CreateTime Desc 

我收到的錯誤是隻有一個表達式可以在選擇列表中指定時不引入子查詢與EXISTS。

回答

1

列位置的子查詢只能返回一個值。

如果您正在尋找多行,改變你的子查詢:

... 
(select top(5) id,title From News) as [SpLinks] 
From News 
... 

爲連接:

... 
,  SpLinks.id 
,  SpLinks.title 
from News 
cross join 
     (
     select top(5) id 
     ,  title 
     from News 
     ) as SpLinks 
... 
+0

我更改爲: @CatID INT AS \t選擇頂層(1) \t ID, \t標題, \t描述, \t NewsType, \t CreateTime, \t ISNULL((ImageURL2), '無PIC')作爲[新聞 - 照片], \t ISNULL(轉換(爲nvarchar(50),ImageTime),'無日期「)作爲[新聞 - 日期] 從新聞橫從新聞 加入 ( 選擇頂部(5)ID,標題 )作爲SpLinks \t凡(NewsType = @CatID)和(AllowShow = '真') \t訂單由CreateTime描述 但出現此錯誤: 歧義列名'ID' 歧義列名'標題' – user1133937 2012-08-03 11:19:47

+0

您必須在'ID'前加上'News.ID'或'SpLinks.ID'。 – Andomar 2012-08-03 11:38:12

相關問題