最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL CTE 通用表達(dá)式詳解

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

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

一、普通CTE

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

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

相關(guān)文章

  • MySQL存儲引擎InnoDB與Myisam的區(qū)別分析

    MySQL存儲引擎InnoDB與Myisam的區(qū)別分析

    INNODB會支持一些關(guān)系數(shù)據(jù)庫的高級功能,如事務(wù)功能和行級鎖,MYISAM不支持。MYISAM的性能更優(yōu),占用的存儲空間少。所以,選擇何種存儲引擎,視具體應(yīng)用而定。
    2022-12-12
  • MySQL內(nèi)存使用率高問題排查過程以及解決方案

    MySQL內(nèi)存使用率高問題排查過程以及解決方案

    在生產(chǎn)環(huán)境中MySQL作為一個關(guān)鍵的數(shù)據(jù)庫組件,其性能對整個系統(tǒng)的穩(wěn)定性至關(guān)重要,這篇文章主要介紹了MySQL內(nèi)存使用率高問題排查過程以及解決方案的相關(guān)資料,需要的朋友可以參考下
    2025-07-07
  • Mysql數(shù)據(jù)庫常用命令操作大全

    Mysql數(shù)據(jù)庫常用命令操作大全

    這篇文章主要介紹了Mysql常用命令操作方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • MYSQL的select 學(xué)習(xí)筆記

    MYSQL的select 學(xué)習(xí)筆記

    MYSQL的select 學(xué)習(xí)筆記...
    2007-02-02
  • Windows下修改mysql的data文件夾存放位置的方法

    Windows下修改mysql的data文件夾存放位置的方法

    這篇文章主要介紹了在Windows下修改mysql的data文件夾存放位置的方法,需要的朋友可以參考下
    2014-03-03
  • PostgreSQL USAGE和SELECT權(quán)限案例深入分析

    PostgreSQL USAGE和SELECT權(quán)限案例深入分析

    這篇文章主要介紹了PostgreSQL USAGE和SELECT權(quán)限案例深入分析,因為項目需求,需要學(xué)習(xí)PostgreSQL,本人之前學(xué)習(xí)過MYSQL,臨時快速上手,盡快的去學(xué)習(xí)項目需要PostgREST
    2023-04-04
  • MySQL中字符串索引對update的影響分析

    MySQL中字符串索引對update的影響分析

    這篇文章主要介紹了MySQL中字符串索引對update的影響,結(jié)合實例形式分析了添加索引操作對于update語句的性能所造成的影響,需要的朋友可以參考下
    2016-04-04
  • MySQL 導(dǎo)出和導(dǎo)入數(shù)據(jù)的幾種實現(xiàn)方式

    MySQL 導(dǎo)出和導(dǎo)入數(shù)據(jù)的幾種實現(xiàn)方式

    本文主要介紹了MySQL 導(dǎo)出和導(dǎo)入數(shù)據(jù)的幾種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • MySQL中REPLACE INTO和INSERT INTO的區(qū)別分析

    MySQL中REPLACE INTO和INSERT INTO的區(qū)別分析

    REPLACE的運行與INSERT很相似。只有一點例外,假如表中的一個舊記錄與一個用于PRIMARY KEY或一個UNIQUE索引的新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。
    2011-07-07
  • 小型Drupal數(shù)據(jù)庫備份以及大型站點MySQL備份策略分享

    小型Drupal數(shù)據(jù)庫備份以及大型站點MySQL備份策略分享

    為了防止web服務(wù)器出現(xiàn)故障而引起的數(shù)據(jù)丟失,數(shù)據(jù)庫備份顯得非常重要,以免出現(xiàn)重大損失。本文分析研究一下小型的Drupal站的備份策略以及大型站點的mysql備份策略
    2014-11-11

最新評論

益阳市| 高安市| 鲁山县| 富阳市| 来宾市| 云南省| 广平县| 汤原县| 磐安县| 阿坝县| 鹿邑县| 柘城县| 新干县| 太和县| 行唐县| 腾冲县| 图木舒克市| 温泉县| 林芝县| 曲靖市| 巩义市| 抚顺市| 汉阴县| 微山县| 平泉县| 安化县| 灌南县| 石渠县| 鸡泽县| 衡南县| 丰台区| 青海省| 云和县| 天柱县| 临城县| 福建省| 大足县| 南投县| 静乐县| 京山县| 西昌市|