为什么我用这个语句查询出的记录不符?语句如下:
SELECT   TOP 10 * FROM  name ORDER BY vote_number DESC
我是想查出vote_number字段的前10条记录,但是查出来的却是有12条记录,而且这个12条记录都是vote_number字段不为空的,估计和 ORDER BY vote_number DESC这个有关,因为我去掉 ORDER BY vote_number DESC这个语句,就是10条数据,请知道的朋友告诉下如何修改。

解决方案 »

  1.   

    你仔細看看那多出來的2條記錄,看看那個vote_number字段是什么內容。
      

  2.   

    有vote_number一样大的吧,你再having下或者前面加distict吧
      

  3.   

    理论上说,不太可能吧应该是先执行SELECT  TOP 10 然后才是ORDER BY 
      

  4.   

    不知道你用什么数据库,建议将表名name改了,不排除可能是数据库或数据引擎关健字与name冲突造成的...虽然从你的描述看这种可能性不大,但数据库中这种命名个人认为不是好习惯....
      

  5.   

    我用的是vs2005里自带的SQL查询工具 这个应该不会出问题吧 我也很不解  我的语句都很正常,但是查询出来的就是12条语句,而且12条里面的字段vote_number都有值,其他的都是空值,多出来的两条记录没什么特别,也是按排序排出来的。
      

  6.   

    用的是ACCESS数据库 字段名现在是不能改了,因为很多代码里都有引用,应该和这个没多大关系,我用了那么久这个数据库都没出问题,就最近做个排名出了这样奇怪的问题。
      

  7.   

    lz看清我没说你误导别人,看看这个网上找的http://www.cnblogs.com/tintown/archive/2006/01/18/319489.html
      

  8.   

    以下为引用上面地址中的内容
    关于ACCESS中TOP 功能的一个问题我一直以为ACCESS的SQL语句与SQL Server差不多,当时也使用 Select top n在ACCESS测试过,都是成功的,但昨天突然发现ACCESS中有个问题:
      如果在查询TOP语句的后面使用Order by,而且Order by字段中有重复值的话,那么这个TOP很可能会失效,
    会返回所有记录
    比如:
     Select top 5 from News order by CreateDate如果CreateDate中有重复值,那么很有可能会显示出所有的记录来,此TOP功能会失效的
    但如果CreateDate中无重复值,那么TOP功能还是有效的因此,在ACCESS中使用TOP功能要注意一下order by的字段是否会有重复值,如果象CreateDate是"年-月-日 时:分:秒"的,那基本上问题不大的。
    但为了保险起见,我们也可以采用“加入主键”的方式:
     Select top 5 from News order by CreateDate desc,id desc
    用主键作“不可能重复”的保障就可以防止此问题出现了!!