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
这样就解决了。