热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle两个表连接的分段查询

Select*From(SelectRowNumfield_ByName,d.*From(SELECTb.*,c.loginaccountFROMJITUMS.TB_READERSb,JITUMS.tb_rd_a

Select * From ( Select RowNum field_ByName,d.* From (SELECT b.*,c.loginaccount FROM JITUMS.TB_READERS b, JITUMS.tb_rd_a

Select * From ( Select RowNum field_ByName,d.* From (SELECT b.*,c.loginaccount FROM JITUMS.TB_READERS b, JITUMS.tb_rd_account c where b.reader_id= c.reader_id) d Where RowNum <= 10 ) A Where A.field_ByName >= 1;

Select * From ( Select RowNum field_ByName,b.* From ( SELECT c.name cname,d.loginaccount,e.name FROM JITUMS.TB_READERS c ,jitums.tb_rd_account d,jitums.tb_rd_type e where c.rdtypecode= e.rdtypecode and c.reader_id= d.reader_id ) b Where RowNum <= 10 ) A Where A.field_ByName > 0

三个表连接,其中两个表里有一列名字相同,得重命名c.name cnam

一般在项目开发的时候会经常用到,大批量数据不可能一次性加载到内存,这就会用到分页,分页就用到范围我是做.net的微软跟随者(呵呵,不要有分歧哦!Java和.net在这个行业的口舌之战还未停休),时候也用Oracle你说的这个范围查询在Sql Server里可能要好实现些,因为它有个Top关键字.这个就不说了,,主要是说Oracle.Oracle 有个Rownum关键字它的功能等同于SqlServer的Top,Rownum返回的是Table的内部行号,查寻有多少条记录,它的行号就会从1一直递增到最后一条记录,而且这个递增是实时的.所以我们不能用常规的思想去查询.
例如:Select * From TableName Where RowNum >=1000 And RowNum <= 10000 因为记录还没有生成,你给的条件根本不起作用,所以为空.但有个解决方法,我们可能做个子查询,让RowNum变成能用的数据
Select RowNum field_ByName,table_ByName.* From TableName table_ByName然后嵌入到下面括号
Select * from ( Select RowNum field_ByName,table_ByName.* From TableName table_ByName ) A Where A.field_ByName >= 1000 And A.field_ByName <= 10000 上面这个方法好理解,
但效率不高,它查询了所有数据,然后从所有数据查询到1000到10000之间的行,根据笛卡尔积原理,冗余相当大.还有种方法对上面Sql进行了改进,效率高很多
Select * From ( Select RowNum field_ByName,table_ByName.* From TableName table_ByName
Where RowNum <= 10000 ) A Where A.field_ByName >= 1000

还可以写为:

SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM JITUMS.TB_READERS ) A WHERE ROWNUM <=10 WHERE RN > 0


推荐阅读
  • 本文探讨了为何DataWindow.NET在PowerBuilder 11之后版本中不再被支持,并提供了一种在PB12.5中恢复此功能的解决方案。欢迎交流与反馈。 ... [详细]
  • 本文提供了一组示例表,并探讨了如何通过SQL查询来计算父记录及其子记录的总金额。 ... [详细]
  • 解决PHP与MySQL之间的编码不匹配问题
    探讨如何有效解决PHP与MySQL之间常见的编码问题,确保数据的正确传输与显示。 ... [详细]
  • 使用Docker部署Gitea自托管Git服务
    Gitea是由Gogs社区分叉而来的开源自托管Git服务,旨在提供一个更加灵活和易于维护的解决方案。本文将详细介绍如何利用Docker容器技术快速部署Gitea。 ... [详细]
  • Oracle 数据库提供了自动化文件管理(OFM)的功能,允许用户通过设置特定参数来简化数据文件和日志文件的创建过程。当配置了 db_create_file_dest 和 db_create_online_log_dest_n 参数后,系统能够自动处理文件的创建与删除。 ... [详细]
  • 本文档整理了公司内部常用的网站链接和重要资源路径,包括部门周报、内控报销系统、邮件服务等,同时提供了相关数据库的登录信息。 ... [详细]
  • 深入理解Hibernate延迟加载机制
    本文探讨了Hibernate框架中的延迟加载(懒加载)特性,分析其对程序性能的影响及实现原理,同时提供了具体的代码示例来说明如何配置和使用延迟加载。 ... [详细]
  • 1、服务器配置信息① 主服务器IP:192.168.1.2② 从服务器IP:192.168.1.3③ 操作系统:主服务器:Win8,从服务器࿱ ... [详细]
  • 睿智汇海教育致力于培养杰出的IT专业人才,确保学员在就业市场上具备竞争力,助其实现职业成功。我们提供的C#/.Net/Asp.Net培训课程,旨在通过系统的教学和丰富的实践机会,帮助学员掌握最新的技术知识。 ... [详细]
  • 统一幻灯片标题:使用母版功能的技巧
    本文详细介绍了如何通过PowerPoint中的幻灯片母版功能,实现所有幻灯片标题的一致性设置。同时,提供了其他办公软件和编程相关的实用技巧。 ... [详细]
  • MySQL 5.7 绿色版安装及 my.ini 配置详解
    本文主要针对最近因系统重装导致的MySQL配置问题,详细介绍了MySQL 5.7.24绿色解压版的安装步骤及my.ini配置文件的关键设置,帮助用户顺利完成数据库的安装与配置。 ... [详细]
  • 本文介绍如何利用JavaScript在页面加载时为ASP.NET的DropDownList控件设置特定的选项值。 ... [详细]
  • MyBatis入门指南
    本文详细介绍了MyBatis的基础知识,包括如何整合日志框架(如log4j和logback),使用外部JDBC文件,getMapper()方法的应用,以及别名设置等技巧。 ... [详细]
  • 在使用 SQL 语句从数据库中提取数据并尝试将其转换为其他数据类型时,可能会遇到 'java.math.BigDecimal cannot be cast to java.lang.Integer' 错误。本文将详细解释这一错误的原因,并提供有效的解决方案。 ... [详细]
  • 本文探讨了如何利用脚本文件高效管理Oracle数据库,包括脚本文件的创建、编辑及运行方法,旨在为数据库管理人员提供实用指导。 ... [详细]
author-avatar
手机用户2602900871
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有