with as 主要是为了提高代码可读性,减少重复代码,并不能提高效率,重复使用同一逻辑还是建一张中间表,使用完再drop掉。
代码示例(忽略逻辑,随便写的)
WITH temp1 AS
(
SELECT
*
FROM app.app_rank_sku_detail
),
--基于temp1
temp2 AS
(
SELECT
t2.*
FROM (
SELECT
*
FROM app.app_rank_sku_detail_week
)t1
INNER JOIN (
SELECT * FROM temp1
)t2
ON t1.item_id = t2.item_id
)
多个语句之间用英文逗号隔开,with as 可以写在其他语句中间,但是后面必须跟select语句或者insert overwrite语句(目前试这两种可以),其他语句会报错