SQL 难点对比分析:WITH 和 CREATE VIEW 的区别

1. 简述

WITHCREATE VIEW 有点类似Python给变量赋值,它们的区别是:

  • WITH:创建临时表以供复用,执行完毕自动清理,无法执行增删改操作(只能被SELECT)

    创建临时表并使用:

    WITH a AS (SELECT * FROM table_a) # 在这里没有分号!
    
    SELECT col
    FROM a
    
  • CREATE VIEW:创建虚拟表以供复用,不删除还存在,可以对视图进行DML操作

    创建 视图:

    CREATE VIEW a AS  # 这里没有括号!
    SELECT * FROM table_a;
    

    删除视图:

    DROP VIEW a;
    

2. 小结

CREATE VIEW WITH
语法 CREATE VIEW view_name AS SELECT 语句(视图); SELECT 语句(你的查询); WITH name AS (SELECT 语句(临时表)) SELECT 语句(你的查询);
用法 便于复用的视图,需要自行删除 便于复用的临时表 ,自动删除
注意1 上述语法分号的位置 上述语法分号的位置,即后面必须直接紧跟SQL语句
注意2 AS 后的语句需要使用括号 AS 后的语句需要使用括号,再次强调with as后面必须紧跟使用CTE(Common table Express)
注意3 AS 不可省略 AS 不可省略

附:CTE(Common table Express) 待深入了解

3. 实例

表格user_behavior_cnt_grouping

在这里插入图片描述

临时表

从上表中构造零时表:

WITH behavior_cnt AS
(SELECT COUNT(*) 'cnt_all',
			 SUM(IF(pv_grouping > 0, 1, 0)) 'pv_total',
			 SUM(IF(pv_grouping > 0 AND fav_grouping > 0 AND cart_grouping > 0 AND buy_grouping > 0, 1, 0)) 'pv-fav-cart-buy'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值