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

Oracle数据库高级查询

在一个SQL语句中嵌套另外一个sql语句称为子查询,而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句

在一个SQL语句中嵌套另外一个sql语句称为子查询,而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句

在一个SQL语句中嵌套另外一个sql语句称为子查询

而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句称为父查询

示例如下

如果需要查询商品类别中为图书的所有商品id,名称,价格

  • 在where条件中子查询的一般实现步骤如下:
    1.我们得先知道需要查询的是什么,明确要显示的结果

    比如说我们上述的就是id,name,price


    2.结果来源于哪里

    显然这些商品的相关信息来自于商品表es_product


    3.需要的查询条件是什么

    这里需要的是查询分类为图书,就是sort_id=(图书类别id)


    4.条件中需要的值来源于哪里

    它来自于一个子查询

    sort_id=(SELECT id FROM es_sort WHERE sortname =' 图书')


    5.最后子查询的sql语句就自然而然出来了


    又例如,我们要查询以李青青为下单人的订单号,收货方式以及订单状态

    1.明确显示的结果 id,payment,status

    2.结果来自于哪里 es_order

    3.需要的条件 user_id=('李青青'的id)

    4.这个条件需要的值来自于一个子查询

    user_id =(select id from es_user where realname='李青青')


    以上说的子查询都是返回的是单行结果,,因此使用了=的操作符,

    其实我们可以使用>\>=\<\<=\<>\!=的操作符

    例如,我们要编写sql语句,查询大于商品平均价格的商品id,名称,价格

  • 但是有时子查询返回的结果可能不止一行

    比如要查询一号订单下的所有商品id,商品名称和价格

    我们使用=操作符的时候,会报一个错误



    我们应进行这样的修改

    将=操作符改为in,即

  • 除了使用in我们还可以使用any,all,exists

    另外我们需要查询商品表中前5条商品的id,商品名称以及上架时间

    要实现这个需求,我们首先要知道有ROWNUM这个内容


    知道了ROWNUM,SQL就出来了

  • 需求继续升级,我们这次要查询最新上架的前五条商品的记录,很可能大家会这样写


    但这是错误的,错误的原因是

    select的执行顺序

    它总是先执行where子句再执行order by语句

    而我们的要求是先对表的记录进行排序,再取前五条记录

    其思路如下


    如果有排序,先把排序后的表当成一个虚拟表,再进行操作

    上述需求的SQL语句如下

  • select id,name,saledate,rownum from(select * from es_product order by saledate desc) where rownum<=5

    切记rownum是动态生成的,在表物理中不存在,所以诸如saledate.rownum并不存在

    linux

    推荐阅读
    • 本文介绍了一种使用SQL Server存储过程来实现基于单一条件的高效分页查询的方法。通过示例代码,详细说明了如何构建和执行这种分页查询。 ... [详细]
    • 如何在Django框架中实现对象关系映射(ORM)
      本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
    • 本文详细介绍了PostgreSQL与MySQL在SQL语法上的主要区别,包括如何使用COALESCE替代IFNULL、金额格式化的方法、别名处理以及日期处理等关键点。 ... [详细]
    • 本文详细介绍了在 Ubuntu 16.04 系统上安装和配置 PostgreSQL 数据库的方法,包括如何设置监听地址、启用密码加密、更改默认用户密码以及调整客户端访问控制。 ... [详细]
    • 本文作为《WM平台上使用Sybase Anywhere 11》系列的第二篇,将继续探讨在Windows Mobile (WM) 系统中如何高效地操作Sybase Anywhere 11数据库。继上一篇关于安装与基本测试的文章之后,本篇将深入讲解数据库的具体操作方法。 ... [详细]
    • 本文探讨了在SQL Server中处理几何类型列时遇到的INTERSECT操作限制,并提供了解决方案,包括通过转换数据类型和使用额外表结构的方法。 ... [详细]
    • 从CodeIgniter中提取图像处理组件
      本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
    • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
    • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
    • 在处理大量联系人数据的批量插入操作时,发现现有方法的执行效率低下,尤其是在处理数十条记录以上时,与导出操作的速度形成鲜明对比。本文将探讨如何通过代码优化来提升批量插入联系人的效率。 ... [详细]
    • HTML:  将文件拖拽到此区域 ... [详细]
    • 在处理大数据量的SQL分页查询时,通常需要执行两次查询来分别获取数据和总记录数。本文介绍了一种优化方法,通过单次查询同时返回分页数据和总记录数,从而提高查询效率。 ... [详细]
    • 流处理中的计数挑战与解决方案
      本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
    • Bootstrap Paginator 分页插件详解与应用
      本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
    • 本文将详细介绍Mybatis Plus框架中@TableField注解的具体使用方法及其应用场景,帮助开发者更好地理解和利用这一强大工具进行高效的数据操作。 ... [详细]
    author-avatar
    YI恐龙_554
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有