hive (with as)

2023-05-16

背景:
当我们书写一些结构相对复杂的SQL语句时,可能某个子查询在多个层级多个地方存在重复使用的情况,这个时候我们可以使用 with as 语句将其独立出来,极大提高SQL可读性,简化SQL~
注:目前 oracle、sql server、hive等均支持 with as 用法,但 mysql并不支持!

2019-05-31更新:MySQL8.0大量更新优化,支持Common table expressions,即支持 with 语法!

一、介绍

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

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

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

二、使用

WITH t1 AS (
SELECT *
FROM carinfo
),
t2 AS (
SELECT *
FROM car_blacklist
)
SELECT *
FROM t1, t2
1
2
3
4
5
6
7
8
9
10
注意:这里必须要整体作为一条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
1
2
3
with t1 as (select * from carinfo);
select * from t1
1
2
2.如果定义了with子句,但其后没有跟select查询,则会报错!

以下写法会报错:

with t1 as (select * from carinfo)
1
正确写法(没有使用 t1没关系,其后有select就行):

with t1 as (select * from carinfo)
select * from carinfo
1
2
3.前面的with子句定义的查询在后面的with子句中可以使用。但是一个with子句内部不能嵌套with子句!

正确写法:

with t1 as (select * from carinfo),
t2 as (select t1.id from t1)
select * from t2
————————————————
版权声明:本文为CSDN博主「深寒丶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Abysscarry/article/details/81322669

转载于:https://www.cnblogs.com/jeasonit/p/11600083.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hive (with as) 的相关文章

随机推荐

  • 黑群晖DSM 6.1网卡支持列表

    黑群晖DSM 6 1网卡支持列表 Network Drivers 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • m3u8文件什么合成便于播放的MP4的方法

    先大家要知道M3U8文件不是一个视频文件 xff0c 里面全是一些路径 xff0c 说白了就是一个目录而已 xff0c 所以要看视频 xff0c 要找到对应存放视频的文件夹 如果不知道怎么找 xff0c 可以使用文本格式打开M3U8文件 x
  • ClamAV

    http www clamav net download html 转载于 https www cnblogs com diyunpeng p 5610209 html
  • C语言变量为何先定义后使用

    C语言中 xff0c 对变量的使用 xff0c 首先要先定义 说明其数据类型 原因可能如下 xff1a 1不同类型的变量 xff0c 其编码表示方式可能不同 2不同类型的变量 xff0c 其占有的空间大小不同 不事先说明无法在内存中开辟空间
  • 自定义控件sizechange问题

    自定义一个控件的时候 xff0c 放在容器里面 xff0c 显示后 xff0c 容器大小怎么改变没有异常 xff0c 但是如果把一个自定义控件放到另一个自定义控件的时候 xff0c 就有这样的问题 xff0c 就是自定义控件2成为了自定义控
  • odroid android 联想,ODROID-XU3

    En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh The ODROID XU3 is an ARM development board cr
  • 动态链接库和静态链接库的相互包含问题及实现

    动态链接库和静态链接库的基本概念请参考 1 深入理解计算机系统 第七章链接 2 程序员的自我修养 第4章 静态链接和第7章 动态链接 3 http blog jobbole com 86852 目的 为了封装代码 xff0c 简化接口 xf
  • windows下使用sed和tee命令

    最近需要在winowds slave上设置构建app和sdk xff0c 至于如何在windows slave上构建c c 43 43 代码生成sdk xff08 dll xff0c lib之类 xff09 和apk xff08 exe文件
  • 加速度计的数据解读

    一 xff1a 加速度计介绍 加速度计 是用来测试线性加速度的一种传感器 xff0c 相对于电子陀螺仪 xff0c 它具有长时间稳定的特点 但因为受到重力的影响 xff0c 短时间内会有噪声 关于加速度计的原理和结构 xff0c 可以参考我
  • Docker 命令

    For Client docker exec Run a command in a running container docker images List images docker import Import the image fro
  • 在实际项目中使用观察者模式 前篇——委托和事件

    我们公司面试初级C 的笔试题有一道题目 xff1a 请用代码实现 xff1a 狗叫 xff0c 主人被惊醒 xff0c 猫跑了 这是一道很典型的可以使用观察者模式来解答的题目 xff0c 可惜来做题的伙伴经常没有答上 xff0c 今天我就从
  • discuz viewthread.php,discuzx/forum_viewthread.php at master · xianhuawei/discuzx · GitHub

    Discuz C 2001 2099 Comsenz Inc This is NOT a freeware use is subject to license terms Id forum viewthread php 34125 2013
  • docker容器内开启22 ssh_docker 容器内 volume mount 实时更新

    记录一个坑 应用场景 在 k8s 中将一个物理机的目录挂载到容器内 xff0c 容器需要实时感知这个目录的变化 如下是我将某个目录挂载到容器内的 yaml 片段 containers name test volumeMounts mount
  • tenda 服务器无法打开网页,腾达路由器打不开网页怎么办

    腾达路由器能够上QQ xff0c 并且能玩游戏 xff0c 基本上可以判断网络连接是正常的 xff0c 那么你知道腾达路由器打不开网页怎么办吗 下面是学习啦小编整理的一些关于腾达路由器打不开网页的相关资料 xff0c 供你参考 腾达路由器打
  • 深度图从ros数据类型转换成opencv数据类型

    摘要 xff1a ros下 xff0c 利用realsense D435采集深度图 xff0c 并将其转换成opencv的数据类型 一 RGBD图像采集 通过image transport包 xff0c 根据给定的采集速度从realsens
  • ArangoDB查询语言(AQL) 基本语法&用法

    原文链接 个人博客 欢迎访问 ArangoDB查询语言 xff08 AQL xff09 类似于结构化查询语言 xff08 SQL xff09 在它的目的 两者都支持读取和修改集合数据 xff0c 但AQL不支持数据定义操作 xff0c 例如
  • No compiler is provided in this environment. Perhaps you are running on a JR

    maven编译项目时出错 xff0c 提示信息如下 xff1a ERROR Failed to execute goal org apache maven plugins maven compiler plugin 3 1 testComp
  • [Error] assignment to expression with array type

    int array1 61 1 2 3 int array2 int array3 3 array2 61 array1 copy pointer only array3 61 amp array1 error To elaborate f
  • docker使用阿里云镜像加速

    由于很多镜像是国外网站的 xff0c 我们下载的话会比较耗时 xff0c 但是国内有些企业做了镜像拷贝工作 xff0c 这样 xff0c 我们就可以直接从他们的国内服务器上下载相应的文件就好了 xff0c 比如阿里云的服务 登录阿里云 xf
  • hive (with as)

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