MySQL 树层次结构查询?

标签 mysql sql stored-procedures recursion

我需要获取父节点的所有子节点?

我的表格如下

id

parent_id

并说数据是

id   parent_id

1     -1

2      1

3     -1

4      2

5      4

我想要一个查询,它将返回给定 id 的所有 child

例如,如果我传递 1,它将返回 2、4、5

最佳答案

SET @input = 1;

SELECT GROUP_CONCAT(lvl SEPARATOR ',') children FROM (
SELECT @q := (SELECT GROUP_CONCAT(id SEPARATOR ',') FROM tbl
WHERE parent_id IN (@q)) AS lvl FROM tbl
JOIN
(SELECT @q := @input) tbl
WHERE parent_id IN (@q)) t;

这里是 SQL Fiddle用于查询。

关于MySQL 树层次结构查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33016727/

相关文章:

每年每季度的 MySQL 计数,计数为 0

sql - oracle中的group by和union

php - 将日期从 PDO 传递到 MySQL 存储过程

mysql - 调用过程时 IF-ELSE 不起作用

c# - 存储过程 - 使用参数选择并填充文本框

mysql - 这里如何结合 GROUP BY 和 ORDER BY 呢?

MySQL SELECT DISTINCT 与多个 JOINS

php - 我如何使用mysql进行关键字搜索

sql - 新手的 MySQL 查询优化和 EXPLAIN

sql - 在 SQL Server Management Studio 中执行 NHibernate 生成的预处理语句