您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

select语句中的子查询如何在oracle中工作

select语句中的子查询如何在oracle中工作

这很简单-

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不允许传递多于一行多于一列,这是一个限制。在这里,我们将a传递count给主查询,据我们所知,该查询将始终只是一个数字- 标量值。如果找不到值,则子查询返回null到主查询。而且,子查询可以访问from查询子句中的列,如我的查询所示,该查询employee.empid是从外部查询传递到内部查询的。

编辑

当在select子句中使用子查询时,Oracle实质上将其视为左联接(您可以在查询解释计划中看到此联接),并且行的基数仅在左边的每一行的右边。

左联接非常方便,尤其是select由于其限制而要替换子查询时。在此,LEFT JOIN关键字两侧的表行数没有限制。

Oracle 2022/1/1 18:50:39 有359人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶