方式一

create temporary table 临时表表名 as 
select * from 表名;

 1.创建的临时表仅仅在当前会话可见,数据会被暂存到hdfs上,退出当前会话表和数据将会被删除

2.如果临时表的命名的表名和hive的表名一样,当前会话则会查询临时表的数据,用户在这个会话内将不能使用原表,除非删除或者重命名临时表

3. 临时表不支持分区字段,不支持创建索引

方式二

(1)with as 可以理解为就是子查询,目的提高代码可读性

with t1 as (select * from student)
select * from t1;

1.with as 属于一次性的,后面必须加其他sql一起使用才可以!不然会报错!

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

(2)多个with as 的使用

with t1 as (select * from student),
t2 as (select * from t1)
select * from t2;

1.多个with as 使用必须使用逗号隔开,

2.前面with as生成的临时表可以在后面的with as中使用 但是with子句内部不能嵌套with子句

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐