oracle函数 的 Oracle Left Join

在本教程中,您将学习如何使用Oracle LEFT JOIN子句来查询多个表中的数据。

Oracle LEFT JOIN子句简介

以下语句说明连接两个表T1和T2时的LEFT JOIN子句的语法:

SELECT

column_list

FROM

T1

LEFT JOIN T2 ON

join_predicate;

在这个查询中,T1是左表,T2是右表。查询将T1表中的每一行与T2表中的行进行比较。如果T1和T2表中的一对行满足连接谓词,查询将组合两个表中行的列值,并将结果行记录包含在结果集中。

如果T1表中的行在T2表中没有找到匹配的行,则查询将会将子句中出现在T2表的每个列的值设置为NULL并与T1表的行记录组合作为结果集输出。

换句话说,左连接(Left join)返回左表中的所有行,并从右表中返回匹配的行。

Oracle LEFT JOIN示例

请参阅中的以下orders和employees表,其ER结构图如下所示 -

orders表存储销售订单标题数据。它的salesman_id列引用employees表中的employee_id列。

salesman_id列的值部分是无效的,这意味着并不是所有的订单都有负责订单的销售人员。

以下语句从orders表和employees表中检索所有订单和员工数据:

SELECT

order_id,

status,

first_name,

last_name

FROM

orders

LEFT JOIN employees ON employee_id = salesman_id

ORDER BY

order_date DESC;

执行上面查询语句,得到以下结果 -

如上图中,结果包括订单表中的所有行。 对于在employees表中没有匹配行的orders表中的行记录时,使用NULL值(红色线框内)。

Oracle LEFT JOIN 连接多个表

以下语句使用LEFT JOIN子句演示如何连接三个表:orders, employees 和 customers,如下查询语句 -

SELECT

order_id,

name AS customer_name,

status,

first_name,

last_name

FROM

orders

LEFT JOIN employees ON

employee_id = salesman_id

LEFT JOIN customers ON

customers.customer_id = orders.customer_id

ORDER BY

order_date DESC;

执行上面查询语句,得到以下结果 -

Oracle LEFT与USING子句联接

USING子句指定在连接表时要测试哪个列的相等性。以下显示了如何在LEFT JOIN中使用USING子句的语法:

SELECT

column_list

FROM

T1

LEFT JOIN T2 USING(c1,c2,c3, ...);

在这个语句中,USING子句中列出的列必须在T1和T2表中有存在。

上面查询语句使用USING子句改写后等同于使用ON子句的语句,以下所示:

SELECT

column_list

FROM

t1

LEFT JOIN t2 ON

t1.c1 = t2.c1

AND t1.c2 = t2.c2

AND t1.c3 = t2.c3

AND ... ;

以下语句演示如何在LEFT JOIN中使用USING子句:

SELECT

name,

order_id,

status,

order_date

FROM

customers

LEFT JOIN orders

USING(customer_id)

ORDER BY

name;

执行上面查询语句,得到以下结果 -

上面语句检索所有客户及其订单。对于尚未下过任何订单的客户,SELECT子句使用NULL设置在orders表的列,即:order_id,status和order_date。

ON与WHERE子句中的条件

以下语句查询获得订单ID为58的订单和销售员数据。

SELECT

order_id,

status,

employee_id,

last_name

FROM

orders

LEFT JOIN employees ON

employee_id = salesman_id

WHERE

order_id = 58;

执行上面查询语句,得到以下结果 -

现在,如果将条件从子句移动到LEFT JOIN的ON子句:

SELECT

order_id,

status,

employee_id,

last_name

FROM

orders

LEFT JOIN employees ON

employee_id = salesman_id

AND order_id = 58;

执行上面查询语句,得到以下结果 -

在这种情况下,查询将返回所有订单,但只有订单58具有与其关联的销售员数据。

请注意,对于内连接,置于ON中的条件与置于WHERE子句中的条件相同。

在本教程中,您已学习如何使用Oracle LEFT JOIN子句从多个表中检索数据。

oracle中的left函数,Oracle Left Join相关推荐

  1. oracle中的循环函数,Oracle日期函数和循环总结

    一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...

  2. oracle中的index函数,Oracle中的索引详解(整理)

    一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name ...

  3. oracle 中n次方函数,oracle中常用函数大全

    1.数值型常用函数 函数 返回值 样例 显示 ceil(n) 大于或等于数值n的最小整数 select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数 s ...

  4. oracle中怎么自定义函数,Oracle自定义函数

    用户自定义函数是存储在数据库中的代码块,可以把值返回到调用程序.函数的参数有3种类型: (1)in参数类型:表示输入给函数的参数,该参数只能用于传值,不能被赋值. (2)out参数类型:表示参数在函数 ...

  5. oracle中累乘函数,oracle sql语句实现累加、累减、累乘、累除

    在oracle开发过程中经常会遇到累加.减.乘.除的问题. 下面对这个做个小的总结 --创建测试表 create table aspen(parent_id number,part_id number ...

  6. oracle中的分隔函数,Oracle中的split字符串分割函数

    首先需要定义 2 个类型 1. Row 类型 CREATE OR REPLACE TYPE ty_row_str_split as object (strValue VARCHAR2 (4000)) ...

  7. oracle中的in函数,Oracle中In函数的使用

    SQL: "IN" Function The IN function helps reduce the need to use multipleORconditions. 译:IN ...

  8. oracle 中的cast函数,Oracle cast函数对用户数据进行类型转换

    一.cast函数 cast函数的作用是对用户输入的数据进行数据类型转换,比如用户数据的数据时number类型,小数位数是3位,我们可以将用户数据转换成整形数据int类型. cast函数的格式是cast ...

  9. oracle substr(table),oracle中的substr()函数

    SUBSTR(cExpression,nStartPosition [,nCharactersReturned]) 其中,cExpression指定要从其中返回字符串的字符表达式或备注字段: nSta ...

最新文章

  1. 赠书 | 联邦学习如何在视觉领域应用?
  2. 美国AI博士一针见血:Python这样学最容易成为高手!
  3. 01.移动先行之谁主沉浮----我的第一个程序
  4. 分享字符串右移的算法
  5. 3 地理位置定位_IP地理定位API的十大用途和应用
  6. Dataloader与Dataset
  7. python命令解析_python学习(命令行的解析)
  8. 问题:'NoneType' object has no attribute 'encoding'
  9. ISA server 的备份与还原
  10. JS AES加密与PHP解密
  11. github 手机号码归属地信息库、手机号归属地查询
  12. MySQL删除重复数据
  13. 谢菲尔德遗传算法工具箱
  14. Java使用itext 生成PDF,以生成个人简历为例
  15. vss服务器状态失败_Exchange快照错误,询问写入器状态失败
  16. 威刚SU600固态硬盘不识别通电无反应慧荣SM系列主控数据恢复![图]
  17. 如何低成本,快速构建企业 Wiki 和团队知识分享平台
  18. [4G5G专题-42]:物理层-无线信道的特征:RSRP、SNR、BLER、MCS、CSI、CQI、SI、PMI
  19. 量化投资--技术篇(4) 投资组合策略
  20. oracle查询存储过程完整的sql,SQL命令查询Oracle存储过程信息(代码内容等)

热门文章

  1. 油猴插件导致bing搜索显示“cn.bing.com“重定向次数过多
  2. 米兰德比百年历史渊源
  3. 51单片机定时器动态数码管显示0-999999
  4. 什么是单色、双基色、三基色 LED 显示屏
  5. 企业如何选择一个靠谱的培训直播平台呢?
  6. 京东向上的力量:初心不改,传递信赖
  7. GWT - GWT Designer开发Ajax应用 (06) - 常用控件使用
  8. 冻结训练优化器学习率
  9. 线上问题-OMS订单履约系统调用服务接口超时
  10. 模仿bilibili登录页面