HQL表连接

HQL表连接

前言

更多往期文章请查看
大数据学习目录

Hive支持通常的SQL JOIN语句,仅支持等值连接,不支持非等值连接。
JOIN 语句中经常会使用表的别名。使用别名可以简化SQL语句的编写,使用表名前
缀可以提高SQL的解析效率。

连接查询操作分为两大类:内连接和外连接,而外连接可进一步细分为三种类型:

  1. 内连接: [inner] join
  2. 外连接 (outer join)
    - 左外连接。 left [outer] join,左表的数据全部显示
    - 右外连接。 right [outer] join,右表的数据全部显示
    - 全外连接。 full [outer] join,两张表的数据都显示

案例演示

准备数据

--u1.txt
1,a
2,b
3,c
4,d
5,e
6,f
--u2.txt
4,d
5,e
6,f
7,g
8,h
9,i

在这里插入图片描述

建表

--u1 表
create table if not exists u1( id int, name string) 
row format delimited fields terminated by ',';
--u2表
create table if not exists u2( id int, name string) 
row format delimited fields terminated by ',';

在这里插入图片描述

倒入数据

load data local inpath '/opt/data/u1.txt' into table u1; 
load data local inpath '/opt/data/u2.txt' into table u2;

在这里插入图片描述
在这里插入图片描述

内连接

select * from u1 join u2 on u1.id = u2.id;

在这里插入图片描述

左外连接

select * from u1 left join u2 on u1.id = u2.id;

在这里插入图片描述

右外连接

select * from u1 right join u2 on u1.id = u2.id;

在这里插入图片描述

全外连接

select * from u1 full join u2 on u1.id = u2.id;

在这里插入图片描述

笛卡尔积

满足以下条件将会产生笛卡尔集:

  • 没有连接条件
  • 连接条件无效
  • 所有表中的所有行互相连接

如果表A、B分别有M、N条数据,其笛卡尔积的结果将有 M*N 条数据;缺省条件下hive不支持笛卡尔积运算;

set hive.strict.checks.cartesian.product=false;
select * from u1,u2;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值