【问题标题】:MySQL Tree-Hierarchy query?MySQL树层次结构查询?
【发布时间】:2016-01-06 03:08:36
【问题描述】:

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

我的表如下

id

parent_id

说数据是

id   parent_id

1     -1

2      1

3     -1

4      2

5      4

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

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

【问题讨论】:

  • 是多层还是只有一层?父母->孩子或曾父母->父母->孩子?
  • 你不能用一个查询来做到这一点(不是在 mysql 中)。您将需要一个函数。在这里查看:explainextended.com/2009/03/17/hierarchical-queries-in-mysql
  • 嗯,你可以,只是没有这个数据结构。

标签: mysql sql stored-procedures recursion


【解决方案1】:
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 用于查询。

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2020-04-17
    • 2015-10-15
    相关资源
    最近更新 更多