Access中SQL的top失效解决办法

近日在做一个项目中,数据库是Access,有如下sql语句:select top 8 * from table order by AddTime desc

本来是想查询表中的前8条数据,按时间降序排列。但查出来的确是10条数据,想了很久也想不明白。后来通过调试我发现,第7、8条数据和9、10条数据的添加时间字段值是完全一样的。通过在网上查资料才明白了jet sql 会返回字段是重复值的数据,JET DB 无法从在这重复的几条记录里面判断先后次序,只能返回所有重复的数据,这样就使top失效。

解决办法1:select  top  8 * from(select  * from table order by AddTime desc) as temp

解决办法2:加一个字段进行排序(如主键),select top 8 * from table order by AddTime desc,Id desc

这样就解决了。

 

 

posted @ 2012-03-06 00:20  Dylan.Du  阅读(618)  评论(0)    收藏  举报