对于 Oracle 的 rownum
问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、<=、!=),并非说用>,&
gt;=,=,between..and
时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum
伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明
假设某个表 t1(c1) 有 20 条记录
如果用 select rownum,c1 from t1 where rownum < 10, 只要是用小于号,查出来的结果很容易地与一般理解在概念上能达成一致,应该不会有任何疑问的。
可如果用 select rownum,c1 from t1 where rownum > 10
(如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一
些记录,然后查看记录数,仍然是 20 条啊?那问题是出在哪呢?
先好好理解 rownum 的意义吧。因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说
rownum
是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。所以您没办法期望得到下面的结果集:
11 aaaaaaaa
12 bbbbbbb
13 ccccccc
.................
rownum >10 没有记录,因为第一条不满足去掉的话,第二条的ROWNUM又成了1,所以永远没有满足条件的记录。或者可以这样理解:
ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如果
你用>,>=,=,between...and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下
条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。
有了以上从不同方面建立起来的对 rownum 的概念,那我们可以来认识使用 rownum 的几种现像
1. select rownum,c1 from t1 where rownum != 10 为何是返回前9条数据呢?它与 select rownum,c1 from tablename where rownum < 10 返回的结果集是一样的呢?
因为是在查询到结果集后,显示完第 9 条记录后,之后的记录也都是 != 10,或者
>=10,所以只显示前面9条记录。也可以这样理解,rownum 为9后的记录的 rownum为10,因条件为
!=10,所以去掉,其后记录补上,rownum又是10,也去掉,如果下去也就只会显示前面9条记录了
2. 为什么 rownum >1 时查不到一条记录,而 rownum >0 或 rownum >=1 却总显示所以的记录
因为 rownum 是在查询到的结果集后加上去的,它总是从1开始
3. 为什么 between 1 and 10 或者 between 0 and 10 能查到结果,而用 between 2 and 10 却得不到结果
原因同上一样,因为 rownum 总是从 1 开始
从上可以看出,任何时候想把 rownum = 1 这条记录抛弃是不对的,它在结果集中是不可或缺的,少了rownum=1 就像空中楼阁一般不能存在,所以你的 rownum 条件要包含到 1
但如果就是想要用 rownum > 10 这种条件的话话就要用嵌套语句,把 rownum 先生成,然后对他进行查询。
select *
from (selet rownum as rn,t1.* from a where ...)
where rn >10
一般代码中对结果集进行分页就是这么干的。
另外:rowid 与 rownum 虽都被称为伪列,但它们的存在方式是不一样的,rowid
可以说是物理存在的,表示记录在表空间中的唯一位置ID,在DB中唯一。只要记录没被搬动过,rowid是不变的。rowid
相对于表来说又像表中的一般列,所以以 rowid 为条件就不会有 rownum那些情况发生。
另外还要注意:rownum不能以任何基表的名称作为前缀。
分享到:
相关推荐
基于51单片机的多点测温系统 适用5个ds18b20温度传感器,实时检测每个传感器的温度,并显示在LCD1602上面 包括protues仿真+代码
光伏不确定概率潮流matlab程序,蒙特卡洛模拟半不变量级数展开(Gram-Charlie和Cornish-Fisheries) 电力系统随机潮流概率潮流计算MATLAB程序包含 蒙特卡洛模拟法、半不变量法+级数展开(Gram-Charlie,Cornish-Fisher); 考虑光伏不确定性(Beta分布),以IEEE34节点为例,计算节点电压、支路潮流概率密度、累计概率并绘制曲线。 有注释,附带参考文献,直观清晰。
Stable-diffusion安装时Can‘t load tokenizer for ‘openai/clip-vit-large-patch14‘问题解决
内容概要:本文详细介绍了一种新型的低内存消耗P-Skip(跳过预测)决策算法在视频编码器中的实施方法,尤其适用于需要减少外部存储使用的环境。传统P-Skip算法因需要保存前后帧图像来决定宏块是否变化而占用较多内存资源,新的方法通过引入相似度度量(Similarity Metric, SM),并采用权重矩阵计算法,将宏块的变化量化为特定数值来进行对比评估,从而减少了97.46%的记忆空间使用,在几乎不影响质量的情况下实现了更好的压缩效率,增加了约0.193dB的峰值信噪比(PSNR)。同时对客观视频质量评价指标如PSNR、SSIM识别宏块级错误的能力进行了实验分析。 适合人群:对于图像视频处理感兴趣的研究者和技术爱好者;特别是正在寻找提高现有视频编解码器性能新途径的专业人士。 使用场景及目标:①应用于低成本视频通话及无线千兆等带宽敏感型传输系统;②作为研究论文参考,指导进一步探索高效能、小体积视频压缩标准的新思路。 其他说明:本论文还深入讨论了当前文献中存在的相关工作,并提出未来可能改进的方向。
18650锂电池热效应 最详细的建模
基于S7-300 PLC和组态王组态控制的恒压供水系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
专利授权数(件) 发明专利授权数(件) 实用新型专利授权数(件) 外观设计专利授权数(件) 省份 年份
易中象棋1.0易语言源码
apdl起重机结构设计与参数建模分析
前端分析-2023071100789
资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持
Labview2019版本,集成了欧姆龙全系列PLC,西门子全系列plc,三菱TCP IP通讯 所有相对应的函数模块,可以直接调用,也用当前程序作为调试软件
Comsol光学仿真模型:包括纳米球 柱 Mie散射多级分解
本数据统计全国各省地区自治区直辖市人均受教育年限和劳动生产率统计数据。 特定年龄段人均受教育年限总和平均数,受教育年限的教育限制普通教育和成人学历教育,是衡量个人能力和知识的标准之一,能够全面反映我国各地区受教育程度等。 本数据采用有效人均劳效产出来衡量劳动生产率数据,劳动生产率-劳动者在一定时期内创造的劳动成果和劳动消耗量的比值,单位时间内生产的数量越多,生产率就越高;生产固定量产品所消耗时间越少,生产率就越高。劳动生产率是考核企业经济活动的重要指标,是企业生产技术水平、经营管理水平、职工技术熟练程度和劳动积极性的综合表现。 数据名称:全国各省份人均受教育年限和劳动生产率统计数据(原始数据、线性插值、ARIMA填补版本) 指标 统计全国31个省份地区(自治区、直辖市)数据样本403条,以6岁及6岁以上年龄段人口抽样调查,具体指标有: 总人口数 未上过学人口数 小学人口数 初中人口数 高中人口数 大专及以上人口数 城镇单位就业人员
Digsilent BESS充放电控制,蓄电池特性建模,风储联合,变风速稳定风储联合输出。 蓄电池数据参考的一篇IEEE trans,可以提供文献。
锂电池SOC估计模型SOC估算卡尔曼滤波估算SOC 各大交流论坛搜集的模型合集 图中的12个模型都有 可以直接运行
内容概要:本文介绍了一种针对H.264/AVC标准提出的帧间编码改进方法——SSIM最优速率失真优化(IRDO-SSIM)。文中强调了传统失真度量PSNR无法很好地衡量人类视觉系统感知图像质量的问题,并采用了结构相似性指数(SSIM)作为替代。此外还详细推导了适应SSIM计算所需的拉格朗日乘子,提出了新的RD成本函数公式。实验证明,在不同的运动复杂性和低比特率条件下,IRDO-SSIM相比原生H.264有更好的编码性能。但为了控制运算负担,仍然保留了求最佳匹配块时使用简单的绝对差值和法(SAD)进行运动估计的部分。 适用人群:对于多媒体压缩领域内的研究人员和专业工程师来说非常有价值。这将特别有利于那些正在从事视频编码、传输技术以及图像信号处理的人群。 使用场景及目标:用于对现有或下一代高效视频压缩算法做研究开发。主要应用于提升中低运动复制度图像序列和高效率编码应用下的压缩比和重构视频画质,从而提高用户的视觉体验。具体目标为改善速率扭曲特性,使得重构视频更加贴近人眼真实的观看效果。 其他说明:该论文指出,尽管SSIM能够显著改进RD曲线的表现,但是它增加了算法的整体计算难度,因此在实现上做了权衡,仅部分替换了原有的度量机制以减小实际编码开销。
三相有源电力滤器APF仿真 波形从上到下分别是: 电网电流 APF电流 整流性负载电流 APF能够保证电网电流成正弦
基于模型预测控制 (MPC) 和控制屏障函数 (CBF) 的基本运动规划算法的模块化实现 资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持
EtherCAT总线轴控制,大型非标组装检测设备成熟设备程序,注释非常详细,组合应用日本进口机器人?CCD视觉应用。 本机应用21轴CAT总线+本体四路脉冲轴,柔性设备的经典实机程序,稳定可靠,参考价值高,详细注释,全网就此一家。 整体程序一万零六百步左右,另外?五百多行C语言功能代码。