当前位置: 首页 > article >正文

Hive(25):Select高级查询之Subqueries子查询

1 from子句中子查询

在Hive0.12版本,仅在FROM子句中支持子查询。而且必须要给子查询一个名称,因为FROM子句中的每个表都必须有一个名称。

子查询返回结果中的列必须具有唯一的名称。子查询返回结果中的列在外部查询中可用,就像真实表的列一样。子查询也可以是带有UNION的查询表达式。Hive支持任意级别的子查询,也就是所谓的嵌套子查询。

Hive 0.13.0和更高版本中的子查询名称之前可以包含可选关键字“ AS” 。

--from子句中子查询(Subqueries)
--子查询
SELECT num
FROM (
         select num,name from student_local
     ) tmp;

--包含UNION ALL的子查询的示例
SELECT t3.name
FROM (
         select num,name from student_local
         UNION distinct
         select num,name from student_hdfs
     ) t3;

2 where子句中子查询

从Hive 0.13开始,WHERE子句支持某些类型的子查询。

--where子句中子查询(Subqueries)
--不相关子查询,相当于IN、NOT IN,子查询只能选择一个列。
--(1)执行子查询,其结果不被显示,而是传递给外部查询,作为外部查询的条件使用。
--(2)执行外部查询,并显示整个结果。  
SELECT *
FROM student_hdfs
WHERE student_hdfs.num IN (select num from student_local limit 2);

--相关子查询,指EXISTS和NOT EXISTS子查询
--子查询的WHERE子句中支持对父查询的引用
SELECT A
FROM T1
WHERE EXISTS (SELECT B FROM T2 WHERE T1.X = T2.Y);


http://www.kler.cn/a/37930.html

相关文章:

  • Vue 和 React 前端框架的比较
  • LiveGBS流媒体平台GB/T28181功能-如何将海康大华宇视华为摄像头视频流集中存储云端录像分布式录像存储
  • (四)Flask——配置详解
  • 群晖NAS:docker查询注册表失败解决方案 docker安装网心云、mysql等
  • 【C++进阶之路】vector的基本使用和模拟实现
  • SpringBoot2+Vue2实战(十四)springboot集成redis实现缓存
  • DevOps(二)
  • 关于 Eclipse 的一场 “三角关系”
  • Docker安装卸载
  • ARM架构(寄存器点灯)
  • Word之解决中文和英文混写导致字间距增大的问题(六)
  • AI读图片问题和多通道问题
  • 大数据篇Kafka消息队列指定Topic打印Key、Value、Offset和Partition
  • C++程序生成文件
  • jetson nano报错Cannot allocate memory的问题——解决办法
  • UI schema入门demo:应对业务需求变化的强力武器
  • python调用oepnai API
  • 简单的微信小程序拼图游戏的代码
  • COT、COT-SC、TOT 大预言模型思考方式||底层逻辑:prompt设定
  • flutter开发实战-flutter二维码条形码扫一扫功能实现