oracle subquery是什么,sql – select语句中的Subquery如何在oracle中工作

本文探讨了如何在SQL中使用子查询获取标量值,并将其与LEFT JOIN结合,以简化表连接操作。重点介绍了子查询的限制,以及LEFT JOIN在处理限制和替代子查询中的优势。通过实例解析,揭示了Oracle中的隐式左连接行为及其在实际开发中的实用性。
摘要由CSDN通过智能技术生成

这很简单-

SELECT empname,empid,(SELECT COUNT (profileid)

FROM profile

WHERE profile.empid = employee.empid)

AS number_of_profiles

FROM employee;

当您使用这样的表连接时,它更简单:

SELECT e.empname,e.empid,COUNT (p.profileid) AS number_of_profiles

FROM employee e LEFT JOIN profile p ON e.empid = p.empid

GROUP BY e.empname,e.empid;

子查询说明:

本质上,select中的子查询获得标量值,并将其传递给主查询. select中的子查询不允许通过多个行和多个列,这是一个限制.在这里,我们将一个计数传给主查询,据我们所知,这个查询始终只是一个数字 – 一个标量值.如果未找到值,则子查询将返回null到主查询.此外,子查询可以从主查询的from子句访问列,如我的查询所示,其中,employee.empid从外部查询传递到内部查询.

编辑:

当您在select子句中使用子查询时,Oracle实质上将其视为左连接(您可以在explain plan中查看此查询),其中对于左侧的每一行,行的基数仅在右侧.

左连接说明

左连接非常方便,特别是当您希望由于限制而替换select子查询.这里没有限制LEFT JOIN关键字任一侧的表的行数.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值