更新时间:2022-02-22 GMT+08:00

WITH...AS

功能描述

通过用WITH...AS定义公共表达式(CTE)来简化查询,提高可阅读性和易维护性。

语法格式

1
WITH cte_name AS (select_statement) sql_containing_cte_name;

关键字

  • cte_name:公共表达式的名字,不允许重名。
  • select_statement:完整的SELECT语句。
  • sql_containing_cte_name:包含了刚刚定义的公共表达式的SQL语句

注意事项

  • 定义了一个CTE后必须马上使用,否则这个CTE定义将失效。
  • 可以通过一次WITH定义多个CTE,中间用逗号连接,后定义的CTE可以引用已经定义的CTE。

示例

将“SELECT courseId FROM course_info WHERE courseName = 'Biology'”定义为公共表达式nv,然后在后续的查询中直接利用nv代替该SELECT语句。

1
WITH nv AS (SELECT courseId FROM course_info WHERE courseName = 'Biology') SELECT DISTINCT courseId FROM nv;