0

下面的查询工作正常,并根据我的需要返回正确的结果

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; 

我在 select stmt 附近收到错误的语法错误

4

2 回答 2

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); 
于 2013-04-04T16:36:09.860 回答
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 进行该分配。

于 2013-04-04T16:39:04.050 回答