with-SQL 语句使用
With 暂时不支持在Mysql中使用,但是可以在hive,odps中使用;
with 语句的有点:
with 语句相当于建立了一张临时虚拟表,但是不会被物理创建;
with 语句,可以将业务接耦,每一个with语句,单独成为一个子模块,最后使用基础表将它们串联起来;
示例-伪代码:
with tmp_table_trade as (
-- 订单数据
select
from order_table
)
,tmp_table_track as (
-- 流量utrack数据
select
from utrack_table
)
-- 结果集
select
from tmp_table_trade
join tmp_table_track
on (键值对)
效果:可将业务数据抽象,独立成一个模块,方便子模块数据的维护,以及数据核查;
with结果语句也可以存到表中;
示例代码如下:
-- 先要创建表
drop table if exists tmp_table_with;
CREATE TABLE IF NOT EXISTS tmp_table_with(
user_id STRING,
create_time STRING);
-- with 语句
with tmp_sample(
select user_id
,create_time
from t_user
where --条件)
-- 结果存入临时表
insert into table tmp_sample
select user_id,create_time
from tmp_sample ;