我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 中 WITH 用法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 中 WITH 用法详解

一、什么是 WITH 子句
1. 定义
WITH 子句是 MySQL 中的一种 SQL 结构,又称为 Common Table Expression (CTE)。它在不影响原有 SQL 语句的情况下,允许开发人员临时创建一个内存中的结果集,然后对其进行操作。

用途
WITH 子句的主要用途是创建一个暂时的结果集,这个结果集在后续的查询中可以多次使用。WITH 子句主要用于解决查询复杂度高的问题,因为它可以将多次需要的计算结果集存储下来,以便后续的查询可以直接使用。它还可以帮助我们更好地组织复杂的 SQL 查询,使得代码更加清晰易读。

二、WITH 子句的语法和用法
1.语法
WITH 子句的语法形式如下:

WITH cte_name (column_name1, column_name2, ...) AS ( SELECT column1, column2, ... FROM table WHERE condition )
1
其中,cte_name 是 WITH 子句的名称;column_name1、column_name2 等是结果集的列名;SELECT 子句定义了该结果集的内容;condition 是查询的过滤条件。

使用示例
首先,假设我们有一个名为“employees”的表,其中包含以下内容:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    salary INT
);

接下来,我们填充数据:

INSERT INTO employees (employee_id, first_name, last_name, salary)
VALUES 
    (1, 'John', 'Doe', 50000),
    (2, 'Jane', 'Doe', 55000),
    (3, 'Jim', 'Smith', 60000),
    (4, 'Sarah', 'Johnson', 65000),
    (5, 'Tom', 'Brown', 70000);

现在,我们可以使用 WITH 子句创建一个临时结果集,以计算每个员工的月薪:

WITH monthly_salary AS (
    SELECT employee_id, first_name, last_name, salary/12 AS monthly_salary
    FROM employees
)
SELECT *
FROM monthly_salary;

执行上述 SQL 代码后,将生成以下结果:

 

在这个示例中,我们使用 WITH 子句创建了一个名为“monthly_salary”的临时结果集,其中包含员工 ID、名字、姓氏和月薪。然后,我们选择了所有内容,并从该结果集生成了最终结果。

优点
WITH 子句的主要优点是允许开发人员将复杂的查询进行分解和抽象,以提高代码的可读性和可维护性。例如,如果需要对同一表的不同字段进行多次查询,可以使用 WITH 子句将这些查询的结果集抽象为一个独立的部分,从而避免代码的重复。

三、总结
WITH 子句是 MySQL 中的语句,可以为查询提供临时表。这样可以避免在多个查询中重复定义数据,提高代码可读性,提高查询效率。
 

来源地址:https://blog.csdn.net/qq_45443475/article/details/131852423

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 中 WITH 用法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql中sum用法详解

sum() 函数计算指定列非空值的总和。它支持 distinct、过滤条件、部分和以及与其他聚合函数配合使用。sum() 忽略 null 值,负值返回负值,非数字值返回 null。MySQL 中的 SUM() 函数SUM() 函数简介S
mysql中sum用法详解
2024-05-09

mysql中with...as的用法是什么

mysql中with...as的用法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最近无意中接触到了一篇文章,里面写了一个SQL的用法,是with...as,中午抽空
2023-06-29

mysql中begin with的用法是什么

在MySQL中,BEGIN WITH语句用于指定一个起始值,用于启动一个递归查询。它通常与WITH RECURSIVE一起使用,用于执行递归查询。例如:WITH RECURSIVE cte AS (SELECT 1 AS nUNION A
mysql中begin with的用法是什么
2024-04-22

MySQL中with rollup的用法及说明

这篇文章主要介绍了MySQL中with rollup的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

mysql中in的用法详解

mysql in 操作符检查指定列是否包含给定值列表中的值。语法为:where column_name in (value1, value2, ..., valuen)。优点包括:效率、可读性。注意事项:值必须用单引号括起来,不能检查布尔值
mysql中in的用法详解
2024-04-26

mysql中exists的用法详解

前言 在日常开发中,用mysql进行查询的时候,有一个比较少见的关键词exists,我们今天来学习了解一下这个 exists这个sql关键词的用法,这样在工作中遇到一些特定的业务场景就可以有更加多样化的解决方案 语法解释 语法 SELECT
2023-08-16

Python 中的with关键字使用详解

在 Python 2.5 中, with 关键字被加入。它将常用的 try ... except ... finally ... 模式很方便的被复用。看一个最经典的例子:with open('file.txt') as f:content
2022-06-04

oracle中with用法

with 语句通过定义临时表表达式 (cte) 提高了 oracle 查询的可读性、可重用性和性能:定义 cte:with as ()使用 cte:select ... from ;好处包括提高可读性、避免重复编写 subquery,以及
oracle中with用法
2024-05-09

oracle中with的用法

with 子句在 oracle 中创建临时表或视图,用于创建复杂的临时表或视图,重命名查询结果并提高查询性能:创建临时表:with clause_name as (subquery)重命名查询结果:with clause_name as (
oracle中with的用法
2024-05-08

sql中with as用法以及with-as性能调优/with用法举例

摘要:本文讲解了WITHAS用法,允许在SQL中创建临时表。临时表在后续查询中引用,与普通表相同,但提交查询时会被删除。优化WITHAS性能的方法包括避免嵌套、使用索引、优化子查询和考虑使用物化视图。WITHAS用例包括创建通用表表达式、递归查询、临时聚合以及数据清理和转换。
sql中with as用法以及with-as性能调优/with用法举例
2024-04-02

MySQL Truncate用法详解

前言: 当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足需求,而不去想这类语句的使用场景及注意事项。本篇文章主要介绍truncate语句的使用方法及注意事项。 1.truncate使用语法 truncat
2022-05-28

编程热搜

目录