MySQL递归查询是指在一个查询中使用自身来查询数据,通常用于处理具有层级关系的数据,如组织结构、分类目录等。递归查询可以通过公用表表达式(Common Table Expressions, CTE)来实现。
MySQL中的递归查询主要通过CTE实现,分为两种类型:
递归查询常用于以下场景:
假设有一个名为categories
的表,结构如下:
CREATE TABLE categories (
id INT PRIMARY KEY,
name VARCHAR(255),
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES categories(id)
);
插入一些示例数据:
INSERT INTO categories (id, name, parent_id) VALUES
(1, 'Electronics', NULL),
(2, 'Computers', 1),
(3, 'Laptops', 2),
(4, 'Desktops', 2),
(5, 'Smartphones', 1);
查询某个分类及其所有子分类:
WITH RECURSIVE category_tree AS (
SELECT id, name, parent_id
FROM categories
WHERE id = 2 -- 查询id为2的分类及其子分类
UNION ALL
SELECT c.id, c.name, c.parent_id
FROM categories c
JOIN category_tree ct ON c.parent_id = ct.id
)
SELECT * FROM category_tree;
max_recursion_depth
参数。max_recursion_depth
参数。通过以上内容,你应该对MySQL递归查询有了全面的了解,并能够在实际应用中灵活运用。
领取专属 10元无门槛券
手把手带您无忧上云