Hive表连接----内连接,全连接,左连接,右连接

数据准备:员工表,部门表   
建表语句:12个员工,3个部门
create table emp(id int,name string,deptno int
)clustered by (id) into 2 buckets row format delimited fields terminated by ",";truncate table emp;insert  into emp (id, name, deptno)
values (1,"zhangsan",10),(2,"lisi",20),(3,"wangwu",30),(4,"zhaoliu",10),(5,"xiaoqi",30),(6,"gouba",10),(7,"jiujiu",20),(8,"shishi",30),(9,"shiyi",null),(10,"shier",10),(11,"shisan",10),(12,"shisi",30);select *
from emp order by id;truncate table dept;
create table dept(deptno int,deptname string
)clustered by (deptno) into 3 buckets row format delimited fields terminated by ",";insert into dept
values (10,"研发部"),(20,"开发部"),(30,"宣传部");select *
from dept;
1.内连接:只返回两个表中满足连接条件的记录。当某一表中的记录在另一表中没有匹配时,这些记录将被排除在结果之外。
select *
from emp e inner join dept d on e.deptno = d.deptno order by id;1,zhangsan,10,10,研发部
2,lisi,20,20,开发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
7,jiujiu,20,20,开发部
8,shishi,30,30,宣传部
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部
2.全连接:返回两个表中所有的记录,无论是否满足连接条件。对于没有匹配的记录,另一表中的字段将显示为NULL。
-- 全连接
select *
from emp e full join dept d on e.deptno = d.deptno order by id;1,zhangsan,10,10,研发部
2,lisi,20,20,开发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
7,jiujiu,20,20,开发部
8,shishi,30,30,宣传部
9,shiyi,,,
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部
3.左连接:返回左表中的所有记录,以及右表中满足连接条件的记录。对于左表中没有匹配的记录,右表中的字段将显示为NULL。
select *
from emp e left join dept d on e.deptno = d.deptno order by id;1,zhangsan,10,10,研发部
2,lisi,20,20,开发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
7,jiujiu,20,20,开发部
8,shishi,30,30,宣传部
9,shiyi,,,
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部
4.右连接:返回右表中的所有记录,以及左表中满足连接条件的记录。对于右表中没有匹配的记录,左表中的字段将显示为NULL(两个或者两个以上的数据只显示一条null)。
-- 修改表数据,将右表某个只设置为空truncate table dept;insert into dept
values (10,"研发部"),(null,"开发部"),(30,"宣传部");select id, name, e.deptno, d.deptno, deptname
from emp e right join dept d on e.deptno = d.deptno order by id;,,,,开发部
1,zhangsan,10,10,研发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
8,shishi,30,30,宣传部
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/32717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

示例:WPF中使用IsAsync的方式绑定数据来优化用户体验

一、目的:开发过程中,有时需要绑定大量数据,比如弹出一个窗口,窗口中包含一个ListBox绑定了大量数据,这时会出现点击按钮后出现假死卡顿影响用户体验,这理通过用IsAsync的方式将窗口优先弹出来再加载数据 二…

WHAT - 高性能和内存安全的 Rust(二)

目录 1. 所有权(Ownership)2. 借用(Borrowing)不可变借用可变借用 3. 可变性(Mutability)4. 作用域(Scope)综合示例 了解 Rust 的所有权(ownership)、借用&am…

跨平台免费流程图(思维导图)制作工具 draw.io v24.6.3(可离线)

在当今快节奏的工作环境中,有效地传达复杂信息和工作流程至关重要。流程图和思维导图是两种强大的视觉工具,它们帮助我们清晰地表达想法,理解复杂的系统,并协作完成项目。可以帮助我们清晰地展示信息和逻辑关系。然而,…

MySQL学习笔记-进阶篇-锁

概述 概念 全局锁 表级锁 介绍 表锁 读锁 只允许加锁客户端读操作禁止写操作。允许其他客户端的读操作,阻塞其他客户端的写操作。 lock tables xxx read unlock tables; 写锁 允许加锁客户端的读写操作。既阻塞其他客户端的读,又阻塞其他客…

告别繁琐邀请码,Xinstall助你轻松搭建高效App推广体系!

随着互联网流量的不断变迁,App推广和运营面临着前所未有的挑战。如何快速搭建起满足用户需求的运营体系,成为众多企业亟待解决的问题。在这个背景下,Xinstall凭借其强大的功能和灵活的解决方案,成为了App推广的得力助手。 一、传…

【Redis】

Redis 常见面试题 认识 Redis 什么是 Redis? 我们直接看 Redis 官方是怎么介绍自己的。 Redis 官方的介绍原版是英文的,我翻译成了中文后截图的,所以有些文字读起来会比较拗口,没关系,我会把里面比较重要的特性抽出来…

Centos7.9系统对于文件和文件夹的常用命令操作说明

一、背景描述 在我们的日常工作和生活中,会遇到需要连接Linux服务器操作的情况,最常遇到的一些操作就是文件和文件夹的操作,将这些常用操作记录一下,方便后续的使用。 二、文件常用操作指令 Linux下的指令可以通过按下【tab】键进…

SpringBoot使用spring.factories加载默认配置

在日常开发过程中,发布一些产品或者框架时,会遇到某些功能需要一些配置才能正常运行,这时我们需要的提供默认配置项,同时用户也能覆盖进行个性化 创建Initializer public class FrameContextInitializer implements Application…

VUE 组件之间的传值

通过做过的项目,目前学到几种组件之间的传值方法,留个笔记,才发现,其实不管是组件之间,还是父子组件之间,传值方法挺多的呢。 (1)模板引用 defineExpose 官网简介:模板…

5.3 Python len()函数:获取字符串长度或字节数

Python len()函数详解:获取字符串长度或字节数 Python 中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。 len 函数的基本语法格式为: …

ElasticSearch7.17.19集群搭建+Kibana

下载 1、下载elasticSearch 官网:https://www.elastic.co/cn/downloads/elasticsearch解压 tar -zxvf elasticsearch-7.17.19-linux-x86_64.tar### 修改用户组,es不允许root用户启动 chown es:es elaticsearch### 修改elasticsearch.yml # 所有节点名…

Unity - DrawCall

CPU 向 GPU 发送指令来渲染一个或多个物体的过程。每个 DrawCall 都会触发 GPU 执行一次绘制操作,包括设置渲染状态、传递顶点数据和纹理等。DrawCall 的增加会导致渲染性能下降 合批:将多个物体合并为一个批次进行渲染。其中分为静态合批和动态合批。 …

ConcurrentModificationException (异常通常是由于在一个线程遍历集合的同时,另一个线程修改了集合),解决方案如下

ArrayList 不是线程安全的集合。如果多个线程可能同时访问和修改ArrayList,可以考虑以下几种方法来解决这个问题:1、使用线程安全的集合: 使用 CopyOnWriteArrayList 或者 Collections.synchronizedList 包装的 ArrayList。 代码如下: private final BlockingQueue<List…

如何从docker容器中导入或者导出文件

在Docker中&#xff0c;从容器中导入或导出文件通常可以通过以下几种方法实现&#xff1a; 从容器中导出文件 使用 docker cp 命令 这是最直接的方法&#xff0c;可以从容器内部复制文件到宿主机的文件系统&#xff1a; docker cp <容器ID或容器名称>:<容器内的文…

双指针算法专题(移动零 复写零 快乐数)

目录 前言 1. 移动零 &#xff08;1&#xff09;题目及示例 &#xff08;2&#xff09;一般思路 &#xff08;3&#xff09;双指针解法 2. 复写零 &#xff08;1&#xff09;题目及示例 &#xff08;2&#xff09;一般解法 &#xff08;3&#xff09;双指针解法 3. 快…

在Mac OS上使用Visual Studio Code创建C++ Qt的Hello World应用

引言 Qt是一个跨平台的应用程序和用户界面框架&#xff0c;而Visual Studio Code是一个功能强大的编辑器&#xff0c;两者结合可以极大地提升开发效率。本文将指导你在Mac OS上使用Visual Studio Code创建一个简单的Qt Hello World窗口应用。 环境准备 确保你的MacBook OS运行…

Effective C++ 改善程序与设计的55个具体做法笔记与心得 5

五. 实现 26. 尽可能延后变量定义式的出现时间 请注意: ‌‌‌‌  尽可能延后变量定义式的出现&#xff0c;这样做可增加程序的清晰度并改善程序效率。 解释&#xff1a; 增加程序的清晰度&#xff1a;这样可以让读者在第一时间内更好地理解变量的用途。变量定义在第一次使…

黑马苍穹外卖6 清理redis缓存+Spring Cache+购物车的增删改查

缓存菜品 后端服务都去查询数据库&#xff0c;对数据库访问压力增大。 解决方式&#xff1a;使用redis来缓存菜品&#xff0c;用内存比磁盘性能更高。 key :dish_分类id String key “dish_” categoryId; RestController("userDishController") RequestMapping…

批量重命名神器揭秘:一键实现文件夹随机命名,自定义长度轻松搞定!

在数字化时代&#xff0c;我们经常需要管理大量的文件夹&#xff0c;尤其是对于那些需要频繁更改或整理的文件来说&#xff0c;给它们进行批量重命名可以大大提高工作效率。然而&#xff0c;传统的重命名方法既繁琐又耗时&#xff0c;无法满足高效工作的需求。今天&#xff0c;…

transformers datasets

☆ 问题描述 在进行自然语言处理项目时&#xff0c;经常需要加载和处理不同的数据集。为了简化这一过程&#xff0c;我们可以使用datasets库来方便地加载、切分、查看和处理数据。本解决方案提供了如何使用datasets库加载、查看和处理数据的详细示例&#xff0c;包括如何加载在…