select top 2 * from [ProductInfo]  Where [Flag_Nice]=true and [ProClassID]=" + CID + "  ORDER BY [sortid] asc "本意是想 取2条数据 结果 不是两条 而是 符合 where 的都出来了但去掉  ORDER BY [sortid] asc 就正确了 但不是按 想要的排序ID来的 
 
如果要按排序ID来取两条数据该怎么做 谢谢 了

解决方案 »

  1.   

    能用的。select top 2 * from [ProductInfo]  Where [Flag_Nice]=true and [ProClassID]= CID  ORDER BY [sortid] asc
      

  2.   

    应该是其它原因 ,不是orderby
      

  3.   

    print 'select top 2 * from [ProductInfo]  Where [Flag_Nice]=true and [ProClassID]=' + @CID + '  ORDER BY [sortid] asc '是什么结果 ,好像是你的那上CID串
      

  4.   

    ACCESS 数据库的 呵呵我去掉 那个排序就可以 是两条 但现在需要排序的
      

  5.   

    知道原因了 呵呵 当 sortid 相同的时候就出现 多余2 条的情况 需要加 另一个 字段 辅助 好像说的很牵强 呵呵我 加上   , ProductID desc 就可以了select top 2 * from [ProductInfo]  Where [Flag_Nice]=true and [ProClassID]=" + CID + "  ORDER BY [sortid] asc  , ProductID desc " 应该是 排序的字段 必须 唯一的原因吧 ============================================================
    以下来自百度select top 18 * from news order by hits Desc为什么我用此句的时候,返回的不是18行,而是21行呢?
    问题补充:top15没问题,但我要的是top18啊,哪个大虾知道 
    没有加什么呀,就这么一句
    top语句选择的时候,你的语句是从hits字段降序选择前十八个。假设你的hits是数字,从大到小第18个记录的hits字段假设是3,但是你的数据库表中hits字段值是3的记录却不止一个(由你所说可知有4个),这时候并列18的记录会被全部读出.这就是你top18却读出21条记录的原因. 
    一般需要前18条时,你得在逻辑设计的时候就确保hits字段的值不会有重复才行。 
      

  6.   

    可以这样写:
    Select Top 18 * From(Select * From News Order By hits Desc)
      

  7.   

    因为order的hits里面有重复的数值, 需要再指定一个排序字段就可以减少这种情况的出现,
    news应该有个唯一ID的嘛, 如果再指定这个ID来排序就一定会只返回top 18了
      

  8.   

    http://hi.baidu.com/lonetraveller/blog/item/3c3e6bdef5f05251ccbf1ad0.html
    关于 top 和 order by 一起使用产生的查询结果不正确的问题