SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据

CREATE TABLE IF NOT EXISTS zz0 (
number INT(11));

CREATE TABLE IF NOT EXISTS zz1 (
number INT(11));

INSERT INTO zz0 (number) VALUES(111111);
INSERT INTO zz0 (number) VALUES(222222);
INSERT INTO zz0 (number) VALUES(888888);

INSERT INTO zz1 (number) VALUES(333333);
INSERT INTO zz1 (number) VALUES(444444);
INSERT INTO zz1 (number) VALUES(555555);

hive> select * from zz0;
111111
222222
888888

hive> select * from zz1;
111111
333333
444444
888888

1.在表中存在至少一个匹配时,INNER JOIN 关键字返回行。注释:INNER JOIN 与 JOIN 是相同的。
hive> select * from zz0 join zz1 on zz0.number = zz1.number;
111111  111111
888888  888888

INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "zz1" 中的行在 "zz0" 中没有匹配,就不会列出这些行。

2.LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

hive> select * from zz0 left outer join zz1 on zz0.number = zz1.number;
111111  111111
222222  NULL
888888  888888

3.RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
hive> select * from zz0 right outer join zz1 on zz0.number = zz1.number;
NULL
111111  111111
NULL    333333
NULL    444444
888888  888888

4.FULL JOIN 关键字 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
hive> select * from zz0 full outer join zz1 on zz0.uid = zz1.uid;
NULL
111111  111111
222222  NULL
NULL    333333
NULL    444444
888888  888888

FULL JOIN 关键字会从左表 (zz0) 和右表 (zz1) 那里返回所有的行。如果 "zz0" 中的行在表 "zz1" 中没有匹配,或者如果 "zz1" 中的行在表 "zz0" 中没有匹配,这些行同样会列出。


hive> select * from zz0 left semi join zz1 on zz0.uid = zz1.uid;
111111  111111
888888  888888

13.JOIN的更多相关文章

  1. PostgreSQL 13支持增量排序(Incremental Sorting)

    PostgreSQL 13支持增量排序(Incremental Sorting) PostgreSQL 13一个重要的功能是支持增量排序,使用order by 时可以加速排序,SQL如下 select ...

  2. Spark中的编程模型

    1. Spark中的基本概念 Application:基于Spark的用户程序,包含了一个driver program和集群中多个executor. Driver Program:运行Applicat ...

  3. SQL Server(高级) 关键字的使用 二

    二, 高级 关键字 -- 使用介绍 8,Top 的使用(Top子句返回记录的数目) select top number|percent column_name(s) from table_name 或 ...

  4. Oracle SQL编写注意事项

    1.SQL语句用大写的;因为Oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.数据表最好起别名;因为便于sql优化器快速分析. 3.尽量不要使用 insert into tabl ...

  5. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  6. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  7. Spark编程模型及RDD操作

    转载自:http://blog.csdn.net/liuwenbo0920/article/details/45243775 1. Spark中的基本概念 在Spark中,有下面的基本概念.Appli ...

  8. LINQ_to_SQL语法及实例大全

    LINQ To SQL 语法及实例大全 2011/4/5 目录 LINQ to SQL语句(1)之Where. 2 Where操作... 2 1.简单形式:... 2 2.关系条件形式:... 2 3 ...

  9. python_字符串的操作

    一:字符串的方法与操作 *注意:首字母为l的为从左边操作,为r的方法为从右边操作 1.__contains__()判断是否包含 判断指定字符或字符串是否包含在一个字符串内,返回值为true或者fals ...

随机推荐

  1. UVA11796 Dog Distance

    题意 PDF 分析 问题可以转化为小问题,即两条狗分别在线段上运动. 然后用相对运动知识可以认为甲不动,乙在线段上运动. 小问题就转化为点到线段的最小或最大距离. 时间复杂度\(O(I \times ...

  2. spring mvc从@ResponseBody取到json发现中文乱码

    问题背景:如题. 问题定位:代码跟踪,从源头入手,一步一步跟进,直到设置中文编码的地方. 问题代码: /** * 获取单个测试桩接口内容 * * @author wulinfeng * @param ...

  3. org.springframework.beans.factory.config.MethodInvokingFactoryBean的使用

    它有两种用法:一个是调用类的静态方法,一个是调用已在IOC容器中的bean的方法.调用结果也分两种,一种是有返回,那么也会作为bean注册到IOC容器中,另一种是没有返回值,那么实际上就是为了在启动时 ...

  4. TCP协议中的序列号

    TCP 协议工作在OSI的传输层,是一种可靠的面向连接的数据流协议,TCP之所以可靠,是因为它保证了传送数据包的顺序.顺序是用一个序列号来保证的.响应包内也包括一个序列号,表示接收方准备好这个序列号的 ...

  5. GOF23设计模式之工厂模式(factory)

    一.工厂模式概述 实现了创建者和调用者的分离 (1)分类 ①简单工厂模式 虽然某种程度不符合设计原则,但实际使用最多. ②工厂方法模式 不修改已有类的前提下,通过增加新的工厂类实现扩展. ③抽象工厂模 ...

  6. 批处理判断是否有.net环境

    @echo off (echo 已安装.NET Framework) else (echo 未安装.NET Framework) pause>nul

  7. Java学习之Dubbo+ZooKeeper分布式服务Demo

    背景:在之前的一个<Java学习之SpringBoot整合SSM Demo>分享中说到搭建ZooKeeper和Dubbo分布式框架中遇到了一些技术问题没能成功,只分享了其中的一个中间产物, ...

  8. PHP AST学习

    前一阵和前同事交流在检测webshell方面的相关方法,其中提出了使用lex yacc做一套语法解析来解析字节码段来判断是否存在webshell. 后来在查找相关资料中,找到了github开源的一个工 ...

  9. Win8.1(64bit) Hyper-V 安装Ubuntu 14.04LTS(64 bit)

    为了学习在Linux平台下开发,时隔将近一年多,重新搭建开发环境. 写文档确实很费时间,不过还是很有必要写的,这么一个简单的事情花了接近3个小时才算最终大功告成. 像这种连环嵌套的问题,一旦超过了1个 ...

  10. javascript中的垃圾回收

    1引用计数垃圾回收 核心:跟踪记录对象被引用的次数.思路是如果一个对象A被赋值给了一个变量v,则该对象A的引用计数值加1,如果变量v又被赋予其他值了,比如a="str",则该对象A ...