我现在有个表,其中有个字段hits,记录的是点击次数。我想实现一条SQL语句,从表中取出前10条记录,我是这么写的:select top 10 * from tb1 order by hits DESC
可是怎么也取的不是10条记录,总是多。是不是因为hits字段有重复值啊?因为我换成order by id就可以了。那如果是的话,我要怎么实现这个功能呢?请帮帮我,谢谢。

解决方案 »

  1.   

    这种情况往往是因为排序的字段不唯一
    你用多个字段排序把,比如ID什么的
    select top 10 * from tb1 order by hits DESC,ID desc
      

  2.   

    select top 10 * from tb1 order by hits DESC 会取到大于10条啊?有这样的事?
    试试看
    select top 10 * from tb1 order by hits DESC ,id DESC呢?
      

  3.   

    当排序字段不唯一,也就是说上例中hits 有重复时,而且数据库中的记录大于10条时,返回的结果就可能大于10条
    select top 10 * from tb1 order by hits DESC,ID desc
    这样就没什么问题了
      

  4.   

    试了几次都没有发现怎么样 大于10条的,
    ylnjust02(阿亮) 说“往往是因为排序的字段不唯一”,是什么意思啊? 
    还请指点啊
      

  5.   

    zwkandy(尹天仇) ( ) 信誉:100 
    往往是因为排序的字段不唯一
    也就是说你用hits 来排序,但是hits中有重复的内容,比如:
    ID  hits
    1    13
    2     11
    3    13
    4    12...这样就会可能多于10条