Hive--查询语法

6 篇文章 0 订阅
3 篇文章 0 订阅

hive的查询语法基本和sql一致,也是分为:

  1. 基本查询
select *
 from emp;
select t.empno,t.ename,t.deptno 
from emp t;
  1. 条件查询
    limit
//查询前n条
select *
 from emp 
 limit 5;

区间查询between and

select *
 from emp e 
 where e.sal 
 between t.sal=10 and t.sal =1500;

order by

如果在 严格模式下直接使用order by 会报错,必须加上 LIMIT关键字


set hive.mapred.mode=nonstrict;  #或者将参数值设置为,nostrict
select 
*
from 
A
where d ='2018-10-22'
order by checkin_time 
limit 100

order by默认顺序是升序(asc)。在Hive 2.1.0及以上版本,支持对null值进行排序,升序排序是null值被排在第一位,降序时null值被排在最后。

sort by
Hive支持使用 sort by 排序。
sort by 和 order by的区别是前者给每一reducer上的所有行进行排序,后者保证在数据结果上都有序。也就是说,如果使用超过一个reducer,使用sort by可能给出部分有序的结果。

SELECT key, value FROM src SORT BY key ASC, value DESC

这个查询有2个reducer,每个结果如下

在这里插入图片描述
3. 关联查询
注意: hive 的连接条件一定要在 on 中,否则会笛卡尔积 不允许笛卡尔积查询 set hive.mapred.mode=strict; 允许set hive.mapred.mode=nonstrict;

-- 各类join
--1/ 内连接
-- 笛卡尔积
select a.*,b.*
from t_a a inner join t_b b;


-- 指定join条件
select a.*,b.*
from 
t_a a join t_b b on a.name=b.name;

-- 2/ 左外连接(左连接)
select a.*,b.*
from 
t_a a left outer join t_b b on a.name=b.name;


-- 3/ 右外连接(右连接)
select a.*,b.*
from 
t_a a right outer join t_b b on a.name=b.name;

-- 4/ 全外连接
select a.*,b.*
from
t_a a full outer join t_b b on a.name=b.name;


-- 5/ 左半连接
select a.*
from 
t_a a left semi join t_b b on a.name=b.name;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值