在MySQL中,使用WITH RECURSIVE
语句可以创建一个递归的公用表表达式(CTE)。递归CTE允许我们对具有层次结构或递归关联的数据进行查询。其语法结构如下:
WITH RECURSIVE cte_name (column1, column2, ..., columnN) AS (
-- 基本查询(非递归部分)
SELECT ...
FROM ...
WHERE ...
UNION ALL
-- 递归查询(递归部分)
SELECT ...
FROM cte_name
WHERE ...
)
SELECT ...
FROM cte_name;
其中:
cte_name
:递归CTE的名称。column1, column2, ..., columnN
:CTE中的列名。UNION ALL
:用于合并基本查询和递归查询的结果。如果不需要去重,可以使用UNION ALL
提高性能。如果需要去重,请使用UNION
。