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 @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 に答える
1

選択ステートメントを括弧で囲みます

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 に答える