专栏首页share ai happinessHive中使用 with as 优化SQL

Hive中使用 with as 优化SQL

抛出问题:

当我们书写一些结构相对复杂的SQL语句时,可能某个子查询在多个层级多个地方存在重复使用的情况,这个时候我们可以使用 with as 语句将其独立出来,极大提高SQL可读性,简化SQL~

with as简介

with as 也叫做子查询部分,首先定义一个sql片段,该sql片段会被整个sql语句所用到,为了让sql语句的可读性更高些,作为提供数据的部分,也常常用在union等集合操作中。

with as就类似于一个视图或临时表,可以用来存储一部分的sql语句作为别名,不同的是with as 属于一次性的,而且必须要和其他sql一起使用才可以!

其最大的好处就是适当的提高代码可读性,而且如果with子句在后面要多次使用到,这可以大大的简化SQL;更重要的是:一次分析,多次使用,这也是为什么会提供性能的地方,达到了“少读”的目标。

如何使用with as

WITH t1 AS (SELECT *FROM carinfo  ),   t2 AS (SELECT *FROM car_blacklist  )SELECT *FROM t1, t2

注意:这里必须要整体作为一条sql查询,即with as语句后不能加分号,不然会报错。

注意事项

1. with子句必须在引用的select语句之前定义,同级with关键字只能使用一次,多个只能用逗号分割;最后一个with 子句与下面的查询之间不能有逗号,只通过右括号分割,with 子句的查询必须用括号括起来.

以下写法会报错:

with t1 as (select * from carinfo)
with t2 as (select * from car_blacklist)
select * from t1,t2
with t1 as (select * from carinfo);
select * from t1

2. 如果定义了with子句,但其后没有跟select查询,则会报错!

以下写法会报错:

with t1 as (select * from carinfo)

正确写法(没有使用 t1没关系,其后有select就行):

with t1 as (select * from carinfo)
select * from carinfo

3. 前面的with子句定义的查询在后面的with子句中可以使用。但是一个with子句内部不能嵌套with子句!

正确写法:

with t1 as (select * from carinfo),
t2 as (select t1.id from t1)
select * from t2

本文分享自微信公众号 - 1001次重燃(smile765999),作者:木野归郎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 项目实战中Hive注释乱码解决方案

    下面这些都是我在工作中总结出来的,希望对大家有帮助,如果有其他的问题或者解决方法可以留言给我。

    木野归郎
  • 消息中间件初识和安装 — RabbitMQ

    这两天有个功能实现需要用到rabbitmq,之前做大数据的时候用过kafka,对rabbitmq了解的比较少,这里进行学习总结。

    木野归郎
  • Spark 在大数据中的地位 - 中级教程

    Spark最初由美国加州伯克利大学的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。

    木野归郎
  • Elasticsearch6.0 IKAnalysis分词使用

    Elasticsearch 内置的分词器对中文不友好,会把中文分成单个字来进行全文检索,不能达到想要的结果,在全文检索及新词发展如此快的互联网时代,IK可以进行...

    企鹅号小编
  • python 微积分计算

    dsolve函数是用来解决微分方程(differential equation)的函数。

    py3study
  • vue学习 十七 Vue路由和http请求

    首先需要cmd将路由模块装上,然后重启项目,多打几遍就熟悉了npm run dev,在下面的黑窗口中,我之前已经装过了路由模块,显示如下

    meihuasheng
  • VRSD北京展:带您领略神秘梦幻的未来生活方式

    VRPinea
  • 当教育碰上VR和AR,学生会沉迷于学习无法自拔吗?

    镁客网
  • DAY91:阅读Programming Model

    我们正带领大家开始阅读英文的《CUDA C Programming Guide》,今天是第91天,我们正在讲解Unified Memory Programmin...

    GPUS Lady
  • CESM 2.1.1 移植指南(CentOS 7.6)

    CESM是一个完全耦合的地球系统的数值模拟,由大气、海洋、冰、陆地表面、碳循环和其他组成部分组成。CESM包括一个气候模型,提供地球过去、现在和未来的模拟。CE...

    zhangqibot

扫码关注云+社区

领取腾讯云代金券