MySQL:CTE 通用表达式

CTE(Common Table Expression,通用表达式)在 SQL 查询中定义临时结果集的一种方法,它可以让查询更加简洁、可读性更高,并且可以重复引用。

CTE 是在WITH关键字后面定义的一个子查询,可以在同一查询中被引用多次。它可以被认为是一个临时表,只在定义它的查询(例如:SELECTINSERTDELECTUPDATE)中可见,并且这个临时表的生命周期仅限于当前查询,不作为对象被存储

不同于派生表(Derived Table)CTE可以是自引用的(递归CTE),也可以在
同一查询中多次引用。此外,与派生表相比,CTE提供了更好的可读性和性能。

语法格式如下:

WITH cte_name [column_list] AS(
	-- CTE query
	SELECT column1,column2,...
	FROM table_name
	WHERE condition
	...;
)
SELECT columnlist FROM cte_name;
  • CTE query 中的字段数必须与column_list的字段数相同,若省略column_list,CTE将会使用 CTE query 中的columns

  • 还可以使用两个或以上CTE作为临时表进行查询

  • CTE 查询定义部分使用 SELECT 语句定义了结果集的内容,可以包含各种查询操作和条件。它的结果集将成为 CTE 的数据。

  • 在主查询部分,可以引用 CTE 的名称来访问 CTE 查询部分定义的结果集。

CTE 优点

  • 简化查询逻辑:CTE 允许在查询中使用递归、复杂的子查询或多个操作步骤,以更清晰、易读的方式组织查询逻辑。

  • 重用和可读性:在同一个查询中多次引用 CTE,避免了重复的子查询,提高了查询的可读性和重用性。

  • 性能优化:某些情况下,使用 CTE 可以帮助数据库管理系统进行优化,减少重复查询的开销。

WITH 关键字

WITH 是在 SQL 查询中使用的关键字,用于定义一个或多个通用表达式(Common Table Expression,CTE)。

WITH … INSERT…

在传统的 INSERT 语句中,需要分别指定目标表和要插入的值,而使用 WITH INSERT 技术,可以 先使用 WITH 子句定义一组数据,然后在 INSERT 语句中引用这个临时的数据集合进行插入。基本模式如下:

WITH cte_name [column_list] AS(
	initial_query
	[UNION
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值