7 种 join

DROP TABLE IF EXISTS `test_student`;
CREATE TABLE `test_student` (
`id` int(20) NOT NULL COMMENT '学号',
`sex` int DEFAULT '' COMMENT '性别 0-男 1-女',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表'; DROP TABLE IF EXISTS `test_score`;
CREATE TABLE `test_score` (
`s_id` int(20) COMMENT '学号',
`score` int NOT NULL COMMENT '分数',
`level` int COMMENT '成绩 0-不及格 1-及格 2-优良 3-优秀'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='成绩表'; -- 初始化学生
INSERT INTO test_student VALUES(1, 0, '张三'), (2, 0, '李四'), (3, 1, '王X芳'), (4, 0, '新来的');
-- 初始化成绩
INSERT INTO test_score VALUES(1, 10, 0), (2, 20, 0), (3, 100, 3), (5, 10, 0);
SELECT * FROM test_student ts inner JOIN test_score tc ON ts.id = tc.s_id ;-- 1. inner SELECT * FROM test_student ts LEFT JOIN test_score tc ON ts.id = tc.s_id ;-- 2. LEFT outer join SELECT * FROM test_student ts LEFT JOIN test_score tc ON ts.id = tc.s_id where tc.s_id is null;-- 3. SELECT * FROM test_student ts right JOIN test_score tc ON ts.id = tc.s_id ;-- 4. right outer join SELECT * FROM test_student ts right JOIN test_score tc ON ts.id = tc.s_id where ts.id is null;-- 5. -- 6. full outer join
SELECT * FROM test_student ts LEFT JOIN test_score tc ON ts.id = tc.s_id ;
UNION ALL
SELECT * FROM test_student ts right JOIN test_score tc ON ts.id = tc.s_id ; -- 7. full outer join ... is null
SELECT * FROM test_student ts LEFT JOIN test_score tc ON ts.id = tc.s_id where tc.s_id is null ;
UNION ALL
SELECT * FROM test_student ts right JOIN test_score tc ON ts.id = tc.s_id where ts.id is null;
select id from `test_student` order by rand() limit 1000; -- 随机抽样
-- 可优化为:
select id from `test_student` t1
inner join
(select rand() * (select max(id) from `test_student`) as nid) t2
on t1.id > t2.nid
limit 1000; -- 解析:
select id from `test_student` t1
inner join
( select rand() *2 as nid) t2
on t1.id > t2.nid
limit 1000; select id from `test_student` t1
inner join
( select rand() *2 as nid) t2
on t1.id > 0
limit 1000;
7 种 join的更多相关文章
- MapReduce三种join实例分析
本文引自吴超博客 实现原理 1.在Reudce端进行连接. 在Reudce端进行连接是MapReduce框架进行表之间join操作最为常见的模式,其具体的实现原理如下: Map端的主要工作:为来自不同 ...
- 061 hive中的三种join与数据倾斜
一:hive中的三种join 1.map join 应用场景:小表join大表 一:设置mapjoin的方式: )如果有一张表是小表,小表将自动执行map join. 默认是true. <pro ...
- Hive的三种Join方式
Hive的三种Join方式 hive Hive中就是把Map,Reduce的Join拿过来,通过SQL来表示. 参考链接:https://cwiki.apache.org/confluence/dis ...
- PostgreSQL EXPLAIN执行计划学习--多表连接几种Join方式比较
转了一部分.稍后再修改. 三种多表Join的算法: 一. NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择.在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表 ...
- SQL Server中的三种Join方式
1.测试数据准备 参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备.这两篇博客使用了相同的实验数据. 2.SQ ...
- sql server几种Join的区别测试方法与union表的合并
/* sql server几种Join的区别测试方法 主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别 ...
- SparkSQL的3种Join实现
引言 Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余.更新容错等.而建立表和表之间关系的最佳方式就是Join操作. 对于Spark来说有3中Jo ...
- MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解
逻辑架构 存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序 考点:m ...
- 【知识库】-数据库_MySQL 的七种 join
掘金作者:haifeisi 文章出处: MySQL 的七种 join Learn [已经过测试校验] 一.内连接 二.左外连接 三.右外连接 四.左连接 五.右连接 六.全连接 七.两张表中都没有出现 ...
- sparksql的三种join实现
join 是sql语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余,更新容错等.而建立表和表之间关系的最佳方式就是Join操作. sparksql作为大数据领域的 ...
随机推荐
- C# foreach 值类型及引用类型迭代变量改变的方式
C#中foreach不能改变迭代变量的值 然而此种说法只适用与值类型,更改值类型时会改变在栈上的内存分布 引用类型由于是引用地址的变更,不影响内存分布,所以能够在foreach中更改 至于引用类型中的 ...
- JDBCUtils——原生
需要导入的包: mysql-connector-java-5.1.37-bin.jar import java.sql.Connection; import java.sql.DriverManage ...
- 解决Python图片处理模块pillow使用中出现的问题
最近爬一个电影票房的网站(url:http://58921.com/alltime),上面总票房里面其实是一张图片,那么我需要把图片识别成文字,来获取票房数据. 我头脑里第一想到的解决方案就是要用 ...
- asp.net webAPI POST方法的CORS跨域问题
端口不同会判断为不同域 Method Not Allowed . web.config中设定·customHeaders 错误变化为 原因‘ post方法使用前会有一次OPTION方法的请求’ 解决: ...
- JAVA----线程初级
一.认识多任务.多进程.单线程.多线程 要认识多线程就要从操作系统的原理说起. 以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情.比如你在copy东西 ...
- egret中场景跳转的动画
原理:创建一个截取当前场景的截图然后对截图进行bitmap处理加上tween.优点:无需任何图片,特效!适用于任何场景! //1.卷帘特效 //2.左右切换移动 //3.直接翻 //4.旋转掉落 // ...
- java基础1(二)
Bean的xml配置 1.bean的初始化方式 三种方式: 默认构造器,静态工厂初始化(了解)和实例工厂初始化(了解) 2.springbean的作用域 Bean默认作用域是单实例的 可以设置非单实例 ...
- SQL优化清单
SQL优化清单 1.from 语句中包含多个表的情况下,把记录数少的表放在前面 2.where 语句中包含多个条件时,将刷选多的条件放前面 3.避免使用select * ,因为这样会去查询所有列的数据 ...
- 对弈的C++学习笔记
2018-07-11上传 一:从C到C++ 1.C++新类型 bool 判断真假 占用一个字节 if(条件) 真1或者假 0 bool 类型的取值 true false ...
- ionic2APP 如何处理返回键问题
1.APP中难免会有自定义各种modal.alert,modal或alert处于激活状态时android用户按物理返回键,页面被返回,而这些弹窗切没有被返回,一种解决办法是可以在每个组件内用生命周期钩 ...