SQL-- WITH AS(查询复杂数据后还要做筛选处理)

【用途及定义】

当查询结构复杂,多次重用一个子查询sql导致重复冗余时使用,将子查询语句独立出来,可以看作一种赋值用法

ORACLE,SQL SERVER,HIVE等均可使用,MYSQL8.0后做了优化,也可使用

【特点】

存储到用户临时表空间,一次分析,多次使用

增强可读性,解耦,优化查询效率的方式之一

【实现】

WITH AAA AS
(
    SELECT
        COALESCE(A.student_name,'空') sname,
        COALESCE(B.teacher_name,'空') tname,
    FROM
        Student A 
    JOIN
        Teacher B
    ON
        A.CLASS_ID=B.CLASS_ID
),
CCC AS
(
    SELECT
        count(*)
    FROM
        Student A
    WHERE
        A.sex = '男'
        AND
        A.class_name = '一年级一班'
)
SELECT
    AAA.sname,
    AAA.tname,
    CCC.cname
FROM
    AAA,CCC
    

【注】

  1. with as 与之后的select作为一条sql使用
  2. 一条sql只能有一个with,多个as之间用","隔开,in的最后是")"
  3. with不可单独使用,不可嵌套

文章参考大神链接如下

https://blog.csdn.net/Abysscarry/article/details/81322669?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

猜你喜欢

转载自blog.csdn.net/qq_36766417/article/details/106684462
今日推荐