INNER JOIN, LEFT JOIN, RIGHT JOIN 的区别
今天我们来一起探索下 JOIN,JOIN 作为数据库操作的核心概念,用于合并两个或多个表中的数据。
一、JOIN (INNER JOIN)
1、基本功能:返回两个表中匹配成功的行。
2、特点:
- 只保留两表中都满足连接条件的记录;
- 如果某行在一个表中存在但在另一个表中没有匹配项,则该行不会出现在结果中;
- 结果集的行数 ≤ 两个原表的行数。
3、语法:
SELECT columns
FROM table1
[INNER] JOIN table2 ON table1.column = table2.column;
4、示例:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
二、LEFT JOIN (LEFT OUTER JOIN)
1、基本功能:返回左表的所有行,即使右表中没有匹配。
2、特点:
- 保留左表的全部记录;
- 当右表无匹配时,右表字段显示为 NULL;
- 结果集的行数 = 左表的行数。
3、语法:
SELECT columns
FROM table1
LEFT [OUTER] JOIN table2 ON table1.column = table2.column;
4、示例:
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.dept_id = departments.dept_id;
三、RIGHT JOIN (RIGHT OUTER JOIN)
1、基本功能:返回右表的所有行,即使左表中没有匹配。
2、特点:
- 保留右表的全部记录;
- 当左表无匹配时,左表字段显示为 NULL;
- 结果集的行数 = 右表的行数;
- 实际使用较少,通常可以用 LEFT JOIN 替代。
3、语法:
SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2 ON table1.column = table2.column;
4、示例:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.dept_id = departments.dept_id;
实际使用建议
- INNER JOIN 是最常用的,适用于需要两个表都有数据的场景;
- LEFT JOIN 常用于需要主表完整数据,关联表可有可无的情况;
- RIGHT JOIN 使用较少,通常可以通过调换表顺序用 LEFT JOIN 实现;
- 注意 NULL 值的处理,特别是在 WHERE 条件中。
在强者的世界中,即便是戴着镣铐跳舞,舞也会跳得铿锵有力。-- 烟沙九洲
INNER JOIN, LEFT JOIN, RIGHT JOIN 的区别的更多相关文章
- left join 和 left outer join 的区别
left join 和 left outer join 的区别 通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right join ...
- SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)
原文链接:http://www.powerxing.com/sql-join/ 总的来说,四种JOIN的使用/区别可以描述为: left join 会从左表(shop)那里返回所有的记录,即使在右表( ...
- left join on +多条件与where区别
left join on +多条件与where区别 重点 先匹配,再筛选where条件. 本文将通过几个例子说明两者的差别. 1. 单个条件 select * from product a left ...
- SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。
语法 join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表可 ...
- 【数据库】left join(左关联)、right join(右关联)、inner join(自关联)的区别
left join(左关联).right join(右关联).inner join(自关联)的区别 用一张图说明三者的区别: 总结: left join(左联接) 返回包括左表中的所有记录和右表中关联 ...
- hive中left join、left outer join和left semi join的区别
先说结论,再举例子. hive中,left join与left outer join等价. left semi join与left outer join的区别:left semi join相当 ...
- 转载:left join和left semi join的联系和区别
1.联系 他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join),而 left semi join 则属于 map ...
- 关于SqlServer的内连接,外链接以及left join,right join之间的一些问题与区别。
就我个人理解通俗点来说内连接和外连接区别: 内连接 inner join或者 join (被默认为内连接) : 内连接的原理是:先进行语句判断和运行得出结果,然后在将结果连接起来,一般是横着连接. 外 ...
- 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...
- left join 和 left outer join 有什么区别?
left join 是left outer join的简写,left join默认是outer属性的.outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行.它还返回任何 ...
随机推荐
- 在web.xml下配置springmvc的核心控制器
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ...
- Sentinel源码—2.Context和处理链的初始化
大纲 1.Sentinel底层的核心概念 2.Sentinel中Context的设计思想与源码实现 3.Java SPI机制的引入 4.Java SPI机制在Sentinel处理链中的应用 5.Sen ...
- eolinker请求预处理:请求数据中有中文,提示参数错误的解决方法
特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 如下图,请求参pageName参数为中文,提交后报错 需 ...
- 35.2K star!双链笔记+知识图谱+本地优先,这款开源知识管理神器绝了!
一款融合「双链笔记+知识图谱+本地优先」理念的开源知识管理工具,支持Markdown/Org-mode双格式,打造你的第二大脑! 项目介绍 "Logseq 是一个注重隐私.开源的知识管理平台 ...
- MySQL的基本语法(增,删,改,查)
MySQL的基本语法(增,删,改,查) MySQL中的(增)操作 创建数据库 CREATE DATABASE 库名; 例如: CREATE DATABASE db; 创建一个名为db的数据库. 创建列 ...
- 重载(Overloading)与重写(Override)的区别?
重载(Overloading)与重写(Override)的区别? No. 区别 重载 重写 1 英文单词 Overloading Override 2 发生范围 发生在一个类里面 发生在继承关系中 3 ...
- 【工具】F_Record|和画世界一样录制PS的画画过程的插件(亲测好用)
亲测日期:2024/04/11 亲测版本:PS 2024 首先, 作者自己制作的使用视频在这里:https://www.bilibili.com/video/BV1bm411Z762 作者的Githu ...
- Axure RP大数据可视化大屏原型组件源文件
Axure RP大数据可视化大屏原型模板 大数据BI分析上大屏,在很多大企业和政府单位客户都需要,高新区市场监控等,那使用Axure RP做交互原型是必不可少的,有了大屏原型模板可做出不同风格和行业的 ...
- 鸿蒙NEXT实践(二):公共事件通信实践-智能节电案例
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- 实现低PE策略的回测
回测的基本流程 首先需要声明下,此回测属于日间回测,即当天收盘后对交易信号进行检测,得到买入或卖出检测结果,然后由第二天开盘后根据前一天的检测结果完成交易. 其次要对账户进行除权除息处理.因为除权除息 ...