欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL CTE 通用表達式詳解

 更新時間:2025年06月10日 09:55:05   作者:yt94832  
在MySQL中,CTE是一種簡潔而強大的語法,用于構(gòu)建臨時的結(jié)果集,通常用于簡化復(fù)雜查詢,下面通過本文給大家介紹MySQL CTE 通用表達式,感興趣的朋友一起看看吧

在MySQL中,CTE(Common Table Expressions,通用表表達式)是一種簡潔而強大的語法,用于構(gòu)建臨時的結(jié)果集,通常用于簡化復(fù)雜查詢。CTE通過關(guān)鍵字 WITH引入,定義一個可以在后續(xù)查詢中引用的臨時結(jié)果集。CTE有兩種類型:普通CTE和遞歸CTE。

一、普通CTE

普通CTE用于定義一個非遞歸的臨時結(jié)果集,通常用于提高查詢的可讀性和維護性。

1. 語法

普通CTE的基本語法如下:

WITH cte_name (column1, column2, ...)
AS
(
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition
)
SELECT *
FROM cte_name;
?

2. 示例

假設(shè)我們有一個名為 employees的表,結(jié)構(gòu)如下:

CREATE TABLE employees (
    emp_id INT,
    emp_name VARCHAR(100),
    dept_id INT,
    salary DECIMAL(10, 2)
);
INSERT INTO employees (emp_id, emp_name, dept_id, salary) VALUES
(1, 'Alice', 1, 5000.00),
(2, 'Bob', 2, 6000.00),
(3, 'Charlie', 1, 5500.00),
(4, 'David', 3, 7000.00),
(5, 'Eve', 2, 6500.00);
?

我們希望查詢部門ID為1的所有員工信息,可以使用普通CTE:

WITH dept1_employees AS (
    SELECT emp_id, emp_name, salary
    FROM employees
    WHERE dept_id = 1
)
SELECT *
FROM dept1_employees;
?

該查詢結(jié)果為:

+--------+----------+--------+
| emp_id | emp_name | salary |
+--------+----------+--------+
| 1      | Alice    | 5000.00|
| 3      | Charlie  | 5500.00|
+--------+----------+--------+

二、遞歸CTE

遞歸CTE用于解決具有層級關(guān)系的數(shù)據(jù)查詢問題,如組織結(jié)構(gòu)、類別層級等。遞歸CTE由兩個部分組成:錨定成員(非遞歸部分)和遞歸成員。

1. 語法

遞歸CTE的基本語法如下:

WITH RECURSIVE cte_name (column1, column2, ...)
AS
(
    -- 錨定成員
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition
    UNION ALL
    -- 遞歸成員
    SELECT column1, column2, ...
    FROM cte_name
    JOIN table_name ON condition
)
SELECT *
FROM cte_name;
?

2. 示例

假設(shè)我們有一個名為 employees的表,包含員工及其經(jīng)理的信息:

CREATE TABLE employees (
    emp_id INT,
    emp_name VARCHAR(100),
    manager_id INT
);
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES
(1, 'Alice', NULL),
(2, 'Bob', 1),
(3, 'Charlie', 2),
(4, 'David', 1),
(5, 'Eve', 3);
?

我們希望查詢員工Alice的所有直接和間接下屬,可以使用遞歸CTE:

WITH RECURSIVE subordinates AS (
    -- 錨定成員:Alice本身
    SELECT emp_id, emp_name, manager_id
    FROM employees
    WHERE emp_name = 'Alice'
    UNION ALL
    -- 遞歸成員:Alice的下屬及其下屬
    SELECT e.emp_id, e.emp_name, e.manager_id
    FROM employees e
    JOIN subordinates s ON e.manager_id = s.emp_id
)
SELECT *
FROM subordinates;
?

該查詢結(jié)果為:

+--------+----------+------------+
| emp_id | emp_name | manager_id |
+--------+----------+------------+
| 1      | Alice    | NULL       |
| 2      | Bob      | 1          |
| 3      | Charlie  | 2          |
| 4      | David    | 1          |
| 5      | Eve      | 3          |
+--------+----------+------------+

到此這篇關(guān)于MySQL CTE 通用表達式的文章就介紹到這了,更多相關(guān)MySQL CTE 通用表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL學(xué)習第一天 第一次接觸MySQL

    MySQL學(xué)習第一天 第一次接觸MySQL

    這篇文章是學(xué)習MySQL的第一篇文章,開啟了探究MySQL的奇妙旅程,內(nèi)容主要是對MySQL的基礎(chǔ)知識進行學(xué)習,了解,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 安裝mysql 8.0.17并配置遠程訪問的方法

    安裝mysql 8.0.17并配置遠程訪問的方法

    這篇文章主要介紹了安裝mysql 8.0.17并配置遠程訪問的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • SQL?ALTER?TABLE語句靈活修改表結(jié)構(gòu)和數(shù)據(jù)類型

    SQL?ALTER?TABLE語句靈活修改表結(jié)構(gòu)和數(shù)據(jù)類型

    這篇文章主要介紹了SQL?ALTER?TABLE語句靈活修改表結(jié)構(gòu)和數(shù)據(jù)類型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • SPSS連接mysql數(shù)據(jù)庫的超詳細操作教程

    SPSS連接mysql數(shù)據(jù)庫的超詳細操作教程

    小編最近在學(xué)習SPSS,在為數(shù)據(jù)庫建立連接時真的踩了很多坑,這篇文章主要給大家介紹了關(guān)于SPSS連接mysql數(shù)據(jù)庫的超詳細操作教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • CentOS7.x?安裝mysql5.7?XtraBackUp備份工具使用命令詳解

    CentOS7.x?安裝mysql5.7?XtraBackUp備份工具使用命令詳解

    這篇文章主要介紹了CentOS7.x?安裝mysql5.7?XtraBackUp備份工具使用,本文給大家介紹了mysql安裝過程及命令使用方法,需要的朋友可以參考下
    2022-04-04
  • union和子查詢中order?by一起使用導(dǎo)致排序失效問題及解決

    union和子查詢中order?by一起使用導(dǎo)致排序失效問題及解決

    這篇文章主要介紹了union和子查詢中order?by一起使用導(dǎo)致排序失效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳細介紹windows下MySQL安裝教程

    詳細介紹windows下MySQL安裝教程

    這篇文章主要給大家介紹的是windows下MySQL安裝教程,其實好多公司,數(shù)據(jù)庫的面試題都是不可避免的,甚至一些前端工程師面試的時候都避免不了被詢問到和數(shù)據(jù)庫有關(guān)的一些問題。下面就從最基礎(chǔ)的安裝教程開始,需要的朋友可以參考一下
    2021-11-11
  • 淺談MySQL臨時表與派生表

    淺談MySQL臨時表與派生表

    MySQL在處理請求的某些場景中,服務(wù)器創(chuàng)建內(nèi)部臨時表。即表以MEMORY引擎在內(nèi)存中處理,或以MyISAM引擎儲存在磁盤上處理.如果表過大,服務(wù)器可能會把內(nèi)存中的臨時表轉(zhuǎn)存在磁盤上。
    2017-02-02
  • MySQL如何刪除表中的數(shù)據(jù)

    MySQL如何刪除表中的數(shù)據(jù)

    這篇文章主要介紹了MySQL如何刪除表中的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實現(xiàn)原理

    MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實現(xiàn)原理

    這篇文章主要介紹了MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實現(xiàn)原理,但是mvcc?的實現(xiàn)原理是什么呢?下文我們就來實例說明來mvcc?的實現(xiàn)原理,感興趣的小伙伴可以參考一下
    2022-05-05

最新評論