oracle中的left函数,Oracle Left Join
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相关推荐
- oracle中的循环函数,Oracle日期函数和循环总结
一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...
- oracle中的index函数,Oracle中的索引详解(整理)
一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name ...
- oracle 中n次方函数,oracle中常用函数大全
1.数值型常用函数 函数 返回值 样例 显示 ceil(n) 大于或等于数值n的最小整数 select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数 s ...
- oracle中怎么自定义函数,Oracle自定义函数
用户自定义函数是存储在数据库中的代码块,可以把值返回到调用程序.函数的参数有3种类型: (1)in参数类型:表示输入给函数的参数,该参数只能用于传值,不能被赋值. (2)out参数类型:表示参数在函数 ...
- oracle中累乘函数,oracle sql语句实现累加、累减、累乘、累除
在oracle开发过程中经常会遇到累加.减.乘.除的问题. 下面对这个做个小的总结 --创建测试表 create table aspen(parent_id number,part_id number ...
- oracle中的分隔函数,Oracle中的split字符串分割函数
首先需要定义 2 个类型 1. Row 类型 CREATE OR REPLACE TYPE ty_row_str_split as object (strValue VARCHAR2 (4000)) ...
- oracle中的in函数,Oracle中In函数的使用
SQL: "IN" Function The IN function helps reduce the need to use multipleORconditions. 译:IN ...
- oracle 中的cast函数,Oracle cast函数对用户数据进行类型转换
一.cast函数 cast函数的作用是对用户输入的数据进行数据类型转换,比如用户数据的数据时number类型,小数位数是3位,我们可以将用户数据转换成整形数据int类型. cast函数的格式是cast ...
- oracle substr(table),oracle中的substr()函数
SUBSTR(cExpression,nStartPosition [,nCharactersReturned]) 其中,cExpression指定要从其中返回字符串的字符表达式或备注字段: nSta ...
最新文章
- 赠书 | 联邦学习如何在视觉领域应用?
- 美国AI博士一针见血:Python这样学最容易成为高手!
- 01.移动先行之谁主沉浮----我的第一个程序
- 分享字符串右移的算法
- 3 地理位置定位_IP地理定位API的十大用途和应用
- Dataloader与Dataset
- python命令解析_python学习(命令行的解析)
- 问题:'NoneType' object has no attribute 'encoding'
- ISA server 的备份与还原
- JS AES加密与PHP解密
- github 手机号码归属地信息库、手机号归属地查询
- MySQL删除重复数据
- 谢菲尔德遗传算法工具箱
- Java使用itext 生成PDF,以生成个人简历为例
- vss服务器状态失败_Exchange快照错误,询问写入器状态失败
- 威刚SU600固态硬盘不识别通电无反应慧荣SM系列主控数据恢复![图]
- 如何低成本,快速构建企业 Wiki 和团队知识分享平台
- [4G5G专题-42]:物理层-无线信道的特征:RSRP、SNR、BLER、MCS、CSI、CQI、SI、PMI
- 量化投资--技术篇(4) 投资组合策略
- oracle查询存储过程完整的sql,SQL命令查询Oracle存储过程信息(代码内容等)