-- 示例代码:使用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
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站