为什么我用这个语句查询出的记录不符?语句如下:
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条数据,请知道的朋友告诉下如何修改。
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条数据,请知道的朋友告诉下如何修改。
关于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
用主键作“不可能重复”的保障就可以防止此问题出现了!!