获得类别级别

时间:2018-04-16 06:32:12

标签: mysql sql hierarchical-data

在MySql中,我有类别表,其中包含字段:

  • cat_id(int)
  • cat_parent_id(int)
  • cat_name(string)

如何创建使用相应级别编号

返回所有类别的列表的查询

根节点的cat parent_id为0

示例SQL小提琴示例数据:http://sqlfiddle.com/#!9/ba439ae/3

我有MySql版本:5.7.19而Fiddle是5.6

1 个答案:

答案 0 :(得分:1)

试试这个:

WITH cte AS
(
  SELECT 
    cat_id, 
    cat_parent_id,
    cat_name,
    0 AS level
  FROM category
  WHERE cat_parent_id = 0
  UNION ALL
  SELECT 
    cat.cat_id, 
    cat.cat_parent_id,
    cat.cat_name,
    (level + 1) AS level
  FROM category cat
  INNER JOIN cte c
    ON c.cat_id = cat.cat_parent_id
)

SELECT 
  cat_id, 
  cat_parent_id,
  cat_name,
  level
FROM cte
--ORDER BY level;