2013-04-04 51 views
0

下面的查詢工作正常,並返回正確的結果,因爲我需要基本SQL排序依據查詢

select top 1 SID from vSTable where (ID in 
(select ID from Engine where Name='nnn' OR Name='mmm') 
and QuestionTypeID=1 and IsOfficial=1) order by vSTable.ITime desc; 

但是當我使用它像這樣

declare @SVal as int 

set @SVal = select top 1 SID 
      from vSTable 
      where (
       ID in 
        (select ID from Engine where Name='nnn' OR Name='mmm') 
       and QuestionTypeID=1 
       and IsOfficial=1 
      ) order by vSTable.ITime desc; 

我靠近選擇語句

錯誤不正確的語法
+0

你使用的是存儲過程嗎? – Garrett 2013-04-04 16:34:32

+0

您正在使用哪些DBMS? SQL Server/MySQL等, – Vikdor 2013-04-04 16:37:19

回答

1

將括號中的select語句包裝起來

declare @SVal as int 

set @SVal = (select top 1 SID 
      from vSTable 
      where (
       ID in 
        (select ID from Engine where Name='nnn' OR Name='mmm') 
       and QuestionTypeID=1 
       and IsOfficial=1 
      ) order by vSTable.ITime desc); 
+0

真棒感謝作品了! – Lav 2013-04-04 16:48:55

+0

@Lav沒問題。不要忘記接受答案。 – jhinkley 2013-04-04 17:00:37

1

您的語法有點不合適。這應該工作:

select @SVal = (select top 1 SID from vSTable where (ID in 
    (select ID from Engine where Name='nnn' OR Name='mmm') 
    and QuestionTypeID=1 and IsOfficial=1) order by vSTable.ITime desc) 

請注意,您可以使用SET或SELECT進行該分配。

+0

真棒感謝作品了! – Lav 2013-04-04 16:48:36