mysql递归查询如何写
时间: 2023-10-18 09:08:45 浏览: 82
SQL如何实现MYSQL的递归查询
5星 · 资源好评率100%
MySQL中递归查询需要使用到递归函数。以下是一个简单的例子:
假设有一个表格`category`,其中包含`id`和`parent_id`两个字段,表示每个分类的ID和其父分类的ID。现在需要查询某个分类下的所有子分类。
首先需要创建一个递归函数:
```
DELIMITER //
CREATE FUNCTION getSubCategoryList(cid INT) RETURNS VARCHAR(1000)
BEGIN
DECLARE result VARCHAR(1000);
SET result = cid;
WHILE result IS NOT NULL DO
SET result = (SELECT GROUP_CONCAT(id SEPARATOR ',') FROM category WHERE FIND_IN_SET(parent_id, result));
END WHILE;
RETURN result;
END//
DELIMITER ;
```
这个函数的作用是根据传入的分类ID `cid`,查询其所有子分类的ID,并以逗号分隔的形式返回。具体实现是利用`GROUP_CONCAT()`函数和`FIND_IN_SET()`函数来查询某个分类下的所有子分类。
然后就可以使用这个函数来查询某个分类下的所有子分类了:
```
SELECT id, parent_id
FROM category
WHERE FIND_IN_SET(parent_id, getSubCategoryList(1));
```
这条SQL语句查询`id`和`parent_id`两个字段,其中`parent_id`为1的所有子分类。
需要注意的是,递归查询可能会导致性能问题,因此在实际应用中需要谨慎使用。
阅读全文