Oracle标量子查询

ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数,就可以考虑标量子查询的可能性。

下面来看几个例子,来了解标量子查询的用法:

1.生成模拟数据

CREATE TABLE TEST1(ID INT);

CREATE TABLE TEST2(ID INT);

INSERT INTO TEST1 VALUES(1);

INSERT INTO TEST1 VALUES(2);

INSERT INTO TEST1 VALUES(3);

INSERT INTO TEST2 VALUES(1);

INSERT INTO TEST2 VALUES(2);

COMMIT;

admin@ORCL> SELECT ID,(SELECT ID FROM TEST2 WHERE TEST1.ID = TEST2.ID) ID2 FROM TEST1;

ID        ID2

---------- ----------

1          1

2          2

3

从上面的结果可以看出标量子查询的表相当于是外连接中的内表,数据结果等价于下面的sql:

admin@ORCL> SELECT * FROM TEST1,TEST2 WHERE TEST1.ID = TEST2.ID(+);

ID         ID

---------- ----------

1          1

2          2

3

2.

admin@ORCL> SELECT A.USERNAME,

2         (SELECT COUNT(*) FROM ALL_OBJECTS B WHERE A.USERNAME = B.OWNER) AS OBJ_CNT

3    FROM ALL_USERS A

4   WHERE A.USERNAME IN ('DIP', 'BI', 'HR');

USERNAME                          OBJ_CNT

------------------------------ ----------

BI                                       8

DIP                                     0

HR                                     35

查询结果等价于

admin@ORCL> SELECT A.USERNAME, COUNT(B.OBJECT_ID)

2    FROM ALL_USERS A, ALL_OBJECTS B

3   WHERE A.USERNAME = B.OWNER(+)

4     AND A.USERNAME IN ('DIP', 'BI', 'HR')

5  GROUP BY A.USERNAME;

USERNAME                       COUNT(B.OBJECT_ID)

------------------------------ ------------------

DIP                                             0

HR                                             35

BI                                                8

PS:

若把COUNT(B.OBJECT_ID)换成" * " 的话,DIP用户的COUNT值为1,这对于实际结果是不对的。

http://www.dengb.com/oracle/481874.htmlwww.dengb.comtruehttp://www.dengb.com/oracle/481874.htmlTechArticleOracle标量子查询 ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数...

oracle标量子查询 外层,Oracle标量子查询相关推荐

  1. Oracle入门--水表项目(单表查询,链接查询,左右外连接,子查询,分页查询)(3)

    水表项目建表 1.1.1 分析 1.1.2 SQL实现 表结构 -- <自来水公司收费系统> -- 1 业主类型表 create table t_ownertype(id number p ...

  2. order by 子查询_视图,子查询,标量子查询,关联子查询

    视图 子查询 标量子查询 关联子查询 如何用SQL解决业务问题 各种函数 1. 视图 视图内存放SQL查询语句,运行时运行该语句.查出的数据为临时数据 创建视图 create view as 视图名称 ...

  3. oracle “**with as**”短语,也叫做子查询部分。

    oracle "with as"短语,也叫做子查询部分. 如果一个sql片段被重复使用或者sql本身比较繁琐,可以考虑将sql片段单独拿出来,起一个别名. 例: withe as ...

  4. Oracle数据库:子查询、单行子查询,多行子查询,in,any,all语句,子查询的练习案例

    Oracle数据库:子查询.单行子查询,多行子查询,in,any,all语句,子查询的练习案例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 ...

  5. Oracle的子查询【单行子查询和多行子查询】

    1.查询部分分为主查询和子查询: 2.根据返回值的记录多少分为单行子查询和多行子查询:单行子查询用单行比较符=连接:多行子查询用多行比较符in连接: 3.子查询的内容可以放在FROM后面,也可以放在W ...

  6. Oracle笔记(六) 多表查询、统计函数及分组查询、子查询

    本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查询一起完成各个复杂查询的操作: 一 ...

  7. oracle 查询 ppt,oracle子查询.ppt

    <oracle子查询.ppt>由会员分享,可在线阅读,更多相关<oracle子查询.ppt(26页珍藏版)>请在人人文库网上搜索. 1.子查询,目标,通过本章学习,您将可以: ...

  8. Oracle数据库SQL语句(四)—子查询(嵌套查询)

    Oracle数据库SQL语句(四) 子查询(嵌套查询) 1.单行子查询 SELECT * FROM stuWHERE ID > (SELECT ID FROM stu WHERE NAME =' ...

  9. oracle之子查询_,Oracle子查询详解

    Oracle子查询详解,根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询, 子查询概念 :当一个查询的结果是另一个查询的条件时,,称之为子查询. 使用子查询注意事项: 子查 ...

最新文章

  1. tbox新增stackless协程支持
  2. 【个人申明】主要发表平台迁至简书和公众号
  3. 程序员修神之路--分布式系统使用网关到底是好还是坏?
  4. install npm 到某个文件下执行_你可能不知道的 npm 依赖管理那些事
  5. python跨文件复制sheet_Python办公自动化-工作表复制(可跨文件)
  6. ZBrush软件特性之Color调控板
  7. XTP: 从XTP看Rust与C++接口FFI通信
  8. 带你认识PLC输入的源型与漏型接法
  9. “舌战群儒”的技术分析
  10. 微星笔记本安装Ubuntu桌面版
  11. 服务器安全-Dos-Deflate
  12. nyoj71独木舟上的旅行
  13. dashboard android,Dashboard软件下载
  14. C语言等待一秒,延时函数sleep()
  15. dnf锁定计算机,DNF老电脑福音 教你如何提升游戏流畅度
  16. 【定语从句练习题】 which 修饰句子
  17. 智合同丨智能合同审查·赋能合同智能应用
  18. OneNote遇到临时服务器无法登录的问题
  19. HS9148红外遥控解码
  20. redis高可用集群

热门文章

  1. FaceShifter:新的人脸交换模型
  2. 2020年度总结-送你一张腾讯视频VIP月卡
  3. android am stop 命令,如何使用am命令启动Android应用
  4. java毕业设计汽车租赁系统演示录像源码+lw文档+mybatis+系统+mysql数据库+调试
  5. WCS仓库(分拣)控制系统 案例介绍
  6. mx播放器有没有投屏功能_芝杜DLNA投屏功能
  7. 《人工智能的明天,中国去哪儿》---汤晓鸥
  8. 淘客公众号系统要用到服务器吗,公众号淘客分销系统你用了吗?
  9. 大数据治理平台建设与应用解决方案
  10. spark概述以及原理架构