MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?
在MySQL中,INNER JOIN
、LEFT JOIN
和RIGHT JOIN
是用于连接两个或多个表的操作符,它们的主要区别在于如何处理匹配的记录和不匹配的记录。
INNER JOIN:
只返回两个表中匹配的记录。
如果在左表和右表中找不到匹配的行,那么这些行将不会出现在结果集中。
语法:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
LEFT JOIN (或 LEFT OUTER JOIN):
返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则结果中右表的字段会显示为
NULL
。适用于需要保留左表所有记录的场景。
语法:
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
RIGHT JOIN (或 RIGHT OUTER JOIN):
返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则结果中左表的字段会显示为
NULL
。适用于需要保留右表所有记录的场景。
语法:
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
总结:
- INNER JOIN:仅返回两个表中都有的匹配行。
- LEFT JOIN:返回左表的所有行,以及右表中的匹配行,如果右表没有匹配,返回
NULL
。 - RIGHT JOIN:返回右表的所有行,以及左表中的匹配行,如果左表没有匹配,返回
NULL
。
MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?的更多相关文章
- 【mysql】mysql中单列索引、联合索引、Join联表查询建立索引 和 EXPLAIN的分析使用
2.创建联合索引,从坐到右分别为:userid.openId.name 2. #### -------------- 多表联合查询 update 2019/03/13 ------------ ...
- 关于MySQL中的left join、on、where的一点深入
原文地址:http://www.oschina.net/question/89964_65912?sort=default&p=3#answers 即使你认为自己已对 MySQL 的 LEFT ...
- mysql中的JOIN用法总结
join是mysql中一个基础的关键词,一般在多表连接查询中使用,这里做一下总结 1.JOIN的语法格式 table_references: table_reference [, table_refe ...
- mysql中多个left join子查询写法以及别名用法
不多说 直接上语句 SELECT a.id, a.thumbNail, a. NAME, a.marketPrice, a.memberPrice, ...
- MySQL中链接查询inner join与left join使用
连接查询其实就是对两个表记录做笛卡尔乘积.如果不指定连接条件的话,则会对每行都做笛卡尔乘积,这样最后返回的结果树就会是两个表记录数的乘积:如果指定则,则仅对符合列条件的行进行笛卡尔乘积,并返回结果.在 ...
- mysql中的几种join 及 full join问题
[注意]:Oracle数据库支持full join,mysql是不支持full join的,但仍然可以同过左外连接+ union+右外连接实现 初始化SQL语句: /*join 建表语句*/ ...
- Mysql中Join用法及优化
Join的几种类型 笛卡尔积(交叉连接) 如果A表有n条记录,B表有m条记录,笛卡尔积产生的结果就会产生n*m条记录.在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者直接用f ...
- mysql中各种join连表查询总结
通常我们需要连接多个表查询数据,以获取想要的结果. 一.连接可以分为三类: (1) 内连接:join,inner join (2) 外连接:left join,left outer join,righ ...
- [转]两表join的multi update语句在MySQL中的执行流程分析
出自:http://hedengcheng.com/?p=209 两表join的multi update语句,执行结果与预计不一致的分析过程 — multi update结论在实际应用中,不要轻易使用 ...
- Mysql 中Left/Right join on后面and和where条件查询的差异-Mysql SQL运算符是有优先级
一.Mysql中Left/Right join on后面and和where条件查询的差异 1.建两张测试表,一张商户定义表.一张商户操作状态明细表 1)商户定义表 CREATE TABLE hope. ...
随机推荐
- 类的加载与ClassLoader的理解
加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口(即引用地址).所 ...
- JVM虚拟机中的内存区域
- System类、Math类、BigInteger与BigDecimal的使用
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. 由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类.其内部的成 ...
- Q:nginx 访问报错403 forbidden
curl 访问本地时 403 forbidden 查看nginx日志,路径为/var/log/nginx/error.log (13: Permission denied),详细报错如下: 2021 ...
- 优化-iceberg调参优化
一.建表优化 1.iceberg表支持更新操作. 文档:https://iceberg.apache.org/docs/latest/configuration/ 功能描述:因v1只支持insert, ...
- dp 常见套路总结
dp 里存的东西值域不大的时候,考虑把状态中某一维和 dp 里存的东西交换,进行 dp. 连续段 dp 时,考虑把连续段化为对每个元素考虑接上一个元素. dp 里的值可能存在某个上界,超过这个值一定不 ...
- jenkins的admin用户的初始密码路径
以下命令查看即可
- 企业付款到零钱(微信小程序提现,用户提现到零钱)
pom 增加 <dependency> <groupId>com.github.binarywang</groupId> <artifactId>wei ...
- Typecho美化之网页底部增加好久不见的底部样式
好久不见之本站同款网站底部样式,效果见本站. 1.修改footer.php首先,在页脚文件footer.php文件的最下面放入以下代码: <!-- 好久不见 --> <div cla ...
- Kubernetes - [03] 安装部署
Kubeadm 部署k8s集群 一.准备工作 1.1.组件 组件:Harbor(私有Docker Hub).Router 服务器操作系统:Centos7 +(内核3.0+,最好内核4.40+) 1.2 ...