select * from  DSGameOnLineTable 
    Where GRID=13 And GRIfRobot=0 And 
                 ( GRPlayID In ( 
SELECT top 2 GRPlayID FROM DSGameOnLineTable 
       where GRID=13 And GRSitChl!=-1 And GRPlayID>0 
     And GRPlayID!=-1 And GRPlayID!=-1 
     And GRUOGPart=1  And GRPStatus=1 And GRIfRobot=0 order by NEWID()   
                                ) 
                  )这个是存储过程的一个语句,我已经把变量变换成数字进行直接运行,但是有很诡异的问题,单独执行子条件语句,出现的结果就是2个,因为有top2,但是作为条件放在整个语句里执行,整个语句查出来的就是不定的数量了,有个时候一个没有,有的时候3、4个,我能保证子句查询的时候一直都是2个,而且条件都是符合的。

解决方案 »

  1.   

    里面有好多变量,top 2 也是其中一个,我已经通过方式转换层字符串去执行了,但是就算是没有变量,我用上面的语句直接执行,按照常量去处理,结果也不是唯一的2个,而是经常变的一个量
      

  2.   

    order by NEWID()   换个order by 呢,就好了吗?
      

  3.   

    换什么样的order by? 如果不用order by newid 就没法实现随机排序了啊。我就是想提出来随机的两个行进行更新