access数据库select查询top时无效的解决办法
2013-12-06 16:41
239 查看
access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的。
比如:select top 10 * from table1 order by cdate desc
其中数据中cdate有很多重复的,这样就导致top失效了。
解决办法就是order一个主键字段来辅助实现
如:select top 10 * from table1 order by cdate desc,ID desc
这样就可以了。
参考一个相关的解释吧,如下:
JET SQL不是 T-SQL语句。jet sql 会返回重复值,也就是说,一个表中如果 ORDER BY 的字段都是 0 ,一共有100条记录,即使你用SELECT TOP 1 来返回记录,也同样返回100条记录,因为 JET DB 无从在这100条记录里面判断先后次序,只能返回100条。要解决此问题可以在后面加入一个主键字段。
比如:select top 10 * from table1 order by cdate desc
其中数据中cdate有很多重复的,这样就导致top失效了。
解决办法就是order一个主键字段来辅助实现
如:select top 10 * from table1 order by cdate desc,ID desc
这样就可以了。
参考一个相关的解释吧,如下:
JET SQL不是 T-SQL语句。jet sql 会返回重复值,也就是说,一个表中如果 ORDER BY 的字段都是 0 ,一共有100条记录,即使你用SELECT TOP 1 来返回记录,也同样返回100条记录,因为 JET DB 无从在这100条记录里面判断先后次序,只能返回100条。要解决此问题可以在后面加入一个主键字段。
相关文章推荐
- C#利用反射+特性实现简单的实体映射数据库操作类
- mysql 事件
- Ubuntu 下安装MongoDB
- Sql Server 2008 收缩日志.
- mysql Last_Error: Error 'File './sales.MYD' not found (Errcode: 24)
- 点滴积累【C#】---TreeView读取数据库
- MySQL Flush Data
- Oracle中jdbc的url的双机写法和单机写法
- ORACLE ORA-01722 错误解决
- 比较2个日期区间重合的天数
- sql经典语句
- sql常用判断语句
- SQL各种连接查询详解
- postgresql delete优化
- SQL 截取时间
- Oracle动态sql
- SQL Server 查询处理中的各个阶段(SQL执行顺序)
- sql 更新表字段(字符串)中某个序列字符
- Oracle编译无效对象方法
- orcle 远程连接其他数据库 进行查询数据