【问题标题】:MySQL Query for Parent Child relationshipMySQL查询父子关系
【发布时间】:2013-01-04 07:34:34
【问题描述】:

我想编写一个选择查询来获取从子到父的完整路径:

| Unique Id | Child Code | Parent Code |
|     X     |     9      |     7       |
|     Y     |     7      |     6       |
|     Z     |     6      |     5       |
|     A     |     5      |    NULL     |
|     B     |     11     |     33      |
|     C     |     33     |     22      |
|     D     |     22     |    NULL     |

如果选择的代码为​​ 9,则查询应返回其所有父级作为结果:9-7-6-5....

如果选择的代码是 11,那么查询应该返回:11-33-22....

谢谢。

【问题讨论】:

标签: mysql


【解决方案1】:

试试这个查询

SELECT *
FROM (
    SELECT
        @r AS _id,
        (SELECT @r := parent_code FROM mytable WHERE unique_id = _id) AS parent_id,
        @l := @l + 1 AS lvl
    FROM
        (SELECT @r := 9, @l := 0) vars,
        mytable m
    WHERE @r <> 0) T1
JOIN mytable T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC;

【讨论】:

    【解决方案2】:

    带有NULL父值:

    SELECT *
    FROM <table_name>
    ORDER BY COALESCE(<parent_id>,<id>), <id>), category_parent_id IS NOT NULL
    

    带有ZERO父值:

    SELECT *
    FROM <table_name>
    ORDER BY COALESCE((SELECT NULLIF(<parent_id>,0)), <id>), NULLIF(<parent_id>,0) IS NOT NULL
    

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多