MySQL中Left Join和Right Join的理解
虽然之前一直见过两个Join,对于其具体的含义也在参考书上读过,但是一直没有记住。现在换一种方式进行学习,改为实验方式理解。
Left Join
测试表:
表结构很简单,test包括两个int字段,test2只包含一个int字段
mysql> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.01 sec) mysql> show create table test2\G
*************************** 1. row ***************************
Table: test2
Create Table: CREATE TABLE `test2` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
数据:
mysql> select * from test;
+------+------+
| a | b |
+------+------+
| 1 | 1 |
| 2 | 3 |
| 4 | 5 |
| 6 | 7 |
+------+------+
4 rows in set (0.00 sec) mysql> select * from test2;
+------+
| a |
+------+
| 4 |
| 6 |
| 2 |
| 8 |
+------+
使用Left Join输出:
mysql> select * from test left join test2 on(test.a);
+------+------+------+
| a | b | a |
+------+------+------+
| 1 | 1 | 4 |
| 1 | 1 | 6 |
| 1 | 1 | 2 |
| 1 | 1 | 8 |
| 2 | 3 | 4 |
| 2 | 3 | 6 |
| 2 | 3 | 2 |
| 2 | 3 | 8 |
| 4 | 5 | 4 |
| 4 | 5 | 6 |
| 4 | 5 | 2 |
| 4 | 5 | 8 |
| 6 | 7 | 4 |
| 6 | 7 | 6 |
| 6 | 7 | 2 |
| 6 | 7 | 8 |
+------+------+------+
这就是笛卡尔积的表示
加上test.a等于test2.a条件之后,对于test2中不存在记录使用NULL表示
mysql> select * from test left join test2 on(test.a = test2.a);
+------+------+------+
| a | b | a |
+------+------+------+
| 1 | 1 | NULL |
| 2 | 3 | 2 |
| 4 | 5 | 4 |
| 6 | 7 | 6 |
+------+------+------+
Right Join
和Left Join相反
Inner Join
对于上面同样的例子使用inner Join输出的记录中不会包含NULL字段:
mysql> select * from test inner join test2 on(test.a = test2.a);
+------+------+------+
| a | b | a |
+------+------+------+
| 4 | 5 | 4 |
| 6 | 7 | 6 |
| 2 | 3 | 2 |
+------+------+------+
3 rows in set (0.00 sec)
MySQL中Left Join和Right Join的理解的更多相关文章
- 【SQL-JOIN】mysql中left joinn、right join、full join以及inner join
		看到这两张图的时候就觉得太棒了,年轻的时候曾经爬了好多坑~~~~~~ 
- MySQL中的幻读,你真的理解吗?
		昨天接到阿里的电话面试,对方问了一个在MySQL当中,什么是幻读.当时一脸懵逼,凭着印象和对方胡扯了几句.面试结束后,赶紧去查资料,才发现之前对幻读的理解完全错误.下面,我们就聊聊幻读. 要说幻读,就 ... 
- MySQL高级知识(二)——Join查询
		前言:该篇主要对MySQL中join语句的七种情况进行总结. 0.准备 join主要根据两表或多表之间列的关系,从这些表中进行数据的查询. 首先创建两张表:tb_emp(员工表)和tb_dept(部门 ... 
- MySQL中的联结表
		使用联结能够实现用一条SELECT语句检索出存储在多个表中的数据.联结是一种机制,用来在一条SELECT语句中关联表,不是物理实体,其在实际的数据库表中并不存在,DBMS会根据需要建立联结,且会在查询 ... 
- 关于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 建表语句*/ ... 
随机推荐
- Vue与swiper想结合封装全屏轮播插件
			项目需求介绍: 1.页面图文混排, 2.点击图片后全屏展示图片,并在底部显示文字,如果没有则不显示 3.关闭全屏后依然停留在上次浏览的位置 4.浏览图片时,不管点击的哪张图片,全屏展示的时候也要显示这 ... 
- JavaWeb(七)之详解JavaWeb路径
			前言 在我们的实际开发中,经常要写路径,不管是链接,重定向还是转发,这都是需要路径的.那这一篇我给大家详细的分享一下Web中的各种路径问题. 世界上一切东西都是相对的,对于这点而言,相信大家并不陌生, ... 
- gitlab服务器搭建教程
			gitlab服务器搭建教程 ----2016年终总结 三 参考https://bbs.gitlab.cc/topic/35/gitlab-ce-8-7-%E6%BA%90%E7%A0%81%E5%AE ... 
- vim 自动在操作符 前后加上空格  C语言
			function! Align_Space() let current_line = getline('.') let replacement = substitute(current_line,'\ ... 
- yii2之GridView小部件
			GridView小部件用于展示多条数据的列表.GridView小部件的使用需要数据提供器即yii\data\ActiveDataProvider的实例作为参数,所以 第一步就是要在控制器方法中创建这个 ... 
- linux系统莫名被黑的诡异经历
			2017年10月28日,ssh登录本地虚拟机之后发现主机名被改成了HUAIWEI_P10. 我一个同事用的此款手机,起初怀疑是他,没放心上. 今天(10月30)发现自己ssh登录不上了.恼火了办公室开 ... 
- 用Python从零开始创建区块链
			本文主要内容翻译自Learn Blockchains by Building One 本文原始链接,转载请注明出处. 作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一 ... 
- The Worm Turns
			The Worm Turns Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ... 
- java中的缓冲流BufferedWriter和BufferedReader
			java中的缓冲流有BufferedWriter和BufferedReader 在java api 手册中这样说缓冲流: 从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取.可以指 ... 
- [译]ASP.NET Core 2.0 部分视图
			问题 如何在ASP.NET Core 2.0中使用部分视图来重用页面的公共部分? 答案 新建一个空项目,在Startup中添加MVC服务和中间件: public void ConfigureServi ... 
