Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql cte

作者:我在坚强也需要有人疼   发布日期:2025-06-24   浏览:73

-- 示例代码:使用MySQL中的CTE(公用表表达式)

-- 1. 基本的CTE示例
WITH cte_example AS (
    SELECT id, name, salary
    FROM employees
    WHERE department = 'Sales'
)
SELECT * 
FROM cte_example;

-- 解释:这个查询首先定义了一个名为 `cte_example` 的CTE,它从 `employees` 表中选择所有在 "Sales" 部门的员工信息。然后,主查询从这个CTE中选择所有数据。

-- 2. 使用多个CTE
WITH 
    sales_data AS (
        SELECT id, name, salary
        FROM employees
        WHERE department = 'Sales'
    ),
    marketing_data AS (
        SELECT id, name, salary
        FROM employees
        WHERE department = 'Marketing'
    )
SELECT *
FROM sales_data
UNION ALL
SELECT *
FROM marketing_data;

-- 解释:这里定义了两个CTE,分别是 `sales_data` 和 `marketing_data`,它们分别选择了 "Sales" 和 "Marketing" 部门的员工信息。最后通过 `UNION ALL` 将两个结果集合并在一起。

-- 3. 递归CTE示例
WITH RECURSIVE employee_hierarchy AS (
    -- 锚点成员:选择顶级员工(例如,CEO)
    SELECT id, name, manager_id
    FROM employees
    WHERE manager_id IS NULL

    UNION ALL

    -- 递归成员:选择下级员工
    SELECT e.id, e.name, e.manager_id
    FROM employees e
    INNER JOIN employee_hierarchy eh ON e.manager_id = eh.id
)
SELECT * 
FROM employee_hierarchy;

-- 解释:这个递归CTE用于构建员工层级结构。锚点成员选择了没有上级(即 `manager_id` 为 `NULL`)的顶级员工,递归成员则不断加入下级员工,直到所有层级都被包含进来。

上一篇:mysql拼接函数

下一篇:mysql unique key

大家都在看

mysqlavg函数保留小数

mysql经纬度距离计算

存储过程mysql

mysql with语句

mysql时间加减

brew 启动mysql

unsigned在mysql中是什么意思

mysql 插入更新

mysql.user

python mysql update

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站