文档章节

oracle 分页 数据重复 数据不正确

嗯嗯是哦
 嗯嗯是哦
发布于 2015/04/16 13:21
字数 465
阅读 609
收藏 9


oracle 一般分页的写法为

select a.id,a.title,rownum as rn,a.create_time from 
                   (select a.* from temp a order by create_time desc) a  where rownum<=20

注意:我用的是 create_time 来进行排序 create_time 中有相等的

为了对比分页数据的差异我用left join 来看数据是否正常

这个是用的一个分页 我用了关联来对比分20条数据和10的数据之间的差异

select a.title,a.rn,b.title,b.rn from 
           (select a.id,a.title,rownum as rn,a.create_time from 
                   (select a.* from temp a order by create_time desc) a  where rownum<=20) a
   left join
           (select a.id,a.title,rownum as rn,a.create_time from 
                   (select a.* from temp a order by create_time desc) a  where rownum<=10) b
 on a.id=b.id

执行结果

按道理是右边前面10条会和左边前面10条数据一样 但是运行后是不一样的 

果这样的话 会有在翻页钟可能出现一条记录会在多个页面出现的现象 甚至多个页面数据一样

sql调整后 在嵌套一层

select a.* from 
           (select a.id,a.title,rownum as rn,a.create_time from 
                   (select a.* from temp a order by create_time desc) a) a  where a.rn<=20
select a.title,a.rn,b.title,b.rn from 
   (select a.* from 
           (select a.id,a.title,rownum as rn,a.create_time from 
                   (select a.* from temp a order by create_time desc) a) a  where a.rn<=20) a
   left join
   (select a.* from 
           (select a.id,a.title,rownum as rn,a.create_time from 
                   (select a.* from temp a order by create_time desc) a) a  where a.rn<=10) b
 on a.id=b.id

执行结果对比

这样结果 就对的上了


有没有发现虽然是相同的sq 套了一层select后结果集都变了 前后两张图片的 左列结果都不是一样的



总结  我这里用的时间排序 其中时间相等的数据很多 如果排序字段唯一 应该不会有这种问题出现




© 著作权归作者所有

共有 人打赏支持
嗯嗯是哦
粉丝 3
博文 11
码字总数 6112
作品 0
南昌
私信 提问
mysql分页查询中如何利用group by进行去重操作

问题描述: 获取隐藏数据列表,由于存在重复的隐藏数据而无需展现,如何实现分页查询? 数据如下(字母替代表示数据): 前端逻辑如下:limit为15,每次请求的参数offset为已经展现的数据条数(...

越是憧憬越要风雨兼程
2018/03/11
0
0
MySQL · 答疑解惑 · MySQL Sort 分页

背景 6.5号,小编在 Aliyun 的论坛中发现一位开发者提的一个问题,说 RDS 发现了一个超级大BUG,吓的小编一身冷汗 = =!! 赶紧来看看,背景是一个RDS用户创建了一张表,在一个都是NULL值的非索...

阿里云RDS-数据库内核组
2015/06/05
0
0
☆MySQL order by limit 分页数据重复问题

0 问题描述 在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的10条数据,limit(10,10)表示列出第二页。但是,当limit遇到order by的时候,可能会出现翻到第二页...

猿码道
2018/05/14
0
0
order by 导致分页数据重复问题

此情况出现的原因是因为我们所order by的时间相同导致的 , 当 order by的时间相同的时候 系统对数据的排序可能变得随机化,即一会儿这条数据在前面,一会儿这条数据在后面了 ,所以 当翻页的...

漂泊者及其影子
2014/11/18
0
6
java Struts2分页功能实现

Struts2 分页功能 如何避免在大并发下 下一页 和上一页 不正确的问题呀 求高手给与解答 每页显示数量 和 默认页码 都是在action中定义. 然后获取用户在页面的操作 将值在传递给action 中的变...

頸頸滴
2012/02/06
2.1K
6

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— 我想过年请假提前回家两天

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 分享王力宏的单曲《爱错》 《爱错》- 王力宏 手机党少年们想听歌,请使劲儿戳(这里) @Caremorele :这几天起床有点...

小小编辑
9分钟前
3
0
Cookie 显示用户上次访问的时间

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.serv......

gwl_
今天
1
0
网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
今天
2
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
3
0
day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部