SQL语句中WITH语句的使用

简介: SQL语句中WITH语句的使用

WITH语句可能大家平时用的不多,第一次接触也是因为sql性能问题,做改造的时候在网上查到的,首先介绍一下这个语句的语法:

WITH custom_name AS (

   -- 查表语句

)

-- 接下来的SQL语句可以引用custom_name作为一个临时表或视图

 

例如:

WITH table_2 AS (

   SELECT id,name, SUM(money) AS totalmoney

   FROM table_1

   GROUP BY name

)

SELECT name, totalmoney

FROM table_2

WHERE totalmoney> 1000;

 

理解起来还是比较好理解,就是把查询结果集重新使用一个名字定义一下,然后去使用这个重新定义的名字执行进一步的查询,可以理解为中间结果集的概念。

 

WITH语句主要有以下几个作用:

 

1、代码重用:通过WITH语句,可以将一个复杂的查询拆分成多个简单的部分,每个部分都可以使用WITH语句创建临时的结果集。然后,后续的查询可以引用这些临时结果集,从而提高代码的可读性和维护性。

 

2、递归查询:WITH语句还支持递归查询。在递归查询中,WITH语句定义了一个初始的结果集,并通过逐步迭代地引用自身来构建更大的结果集,直到满足特定的终止条件为止。递归查询通常用于处理树形结构或层次结构的数据。

 

3、优化性能:在某些情况下,使用WITH语句可以带来性能优势。数据库管理系统可以对WITH语句进行优化,执行计划中可能会重用临时结果集,避免重复计算相同的子查询,从而提高查询性能。

 

4、逻辑清晰:使用WITH语句可以将复杂的查询逻辑拆分成简单的部分,使得查询语句的结构更加清晰,容易理解和维护。

 

在业务开发中使用的场景是递归查询一个机构的子机构,然后将所有子机构作为关联表,查询人员或者业务数据。还有一个场景就是将复杂的查询拆分成几个子查询,提升性能。

目录
相关文章
|
3天前
|
SQL 数据安全/隐私保护 索引
|
9月前
|
存储 SQL 数据可视化
关于SQL语句,只有这么多了2
关于SQL语句,只有这么多了2
|
12月前
|
SQL Go
|
SQL 关系型数据库 MySQL
|
SQL 关系型数据库 MySQL
SQL常用语句
SQL常用语句
114 0
SQL常用语句
|
SQL 关系型数据库 MySQL
常用SQL语句分享
日常工作或学习过程中,我们可能会经常用到某些SQL,建议大家多多整理记录下这些常用的SQL,这样后续用到会方便很多。笔者在工作及学习过程中也整理了下个人常用的SQL,现在分享给你!可能有些SQL你还不常用,但还是希望对你有所帮助,说不定某日有需求就可以用到。
145 0
|
SQL 关系型数据库 MySQL
常用 SQL 语句汇总
常用 SQL 汇总 使用索引注意事项 使用like关键字时,前置%会导致索引失效。 使用null值会被自动从索引中排除,索引一般不会建立在有空值的列上。 使用or关键字时,or左右字段如果存在一个没有索引,有索引字段也会失效。
1888 0
|
SQL 关系型数据库 文件存储