2013-04-04 99 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