CTE or WITH
WITH语句通常被称为通用表表达式(Common Table Expressions)或者CTEs。
WITH语句作为一个辅助语句依附于主语句,WITH语句和主语句都可以是SELECT,INSERT,UPDATE,DELETE中的任何一种语句。
- A special type of subquery that is declared ahead of your main query.(在主查询之前声明。)
- Named and referenced later in FROM statement.(在FROM语句中按名称引用它,就像它是数据库中的任何其他表一样。)
创建CTE的语法
WITH cte_name AS(
CTE_query_definition)
注:可以同时定义1个或多个cte,做法是用逗号','隔开,最后一个cte后不跟','。
WITH cte_name1 AS(
CTE_query_definition),
cte_name2 AS(
CTE_query_definition)
...
Main query
示例
左图中的例子,在inner join中使用子查询s;右侧将s作为CTE定义在主查询之前,之后可以像使用其他表一样,直接引用s。
Why use CTEs / CTE优点
- Exceted once (仅执行一次,然后存储在内存中,可以提高执行效率)
- CTE is then stored in memory
- Improves query performance
- Improving organization of long & complex queries(提升复杂查询的可阅读性、可维护性)
- Referencing other CTEs(可引用其他的CTE)
- Referencing itself ( SELF JOIN) (可自引用)
你的点赞是我持续更新的动力~ 谢谢 Thanks♪(・ω・)ノ
其他SQL学习笔记 友情链接:
JessieY:SQL学习笔记 - 窗口函数OVERzhuanlan.zhihu.com