MySql select 查询相同的 table 子类别父类别和子类别

MySql select query for same table category and subcategory parent under child

这个问题已经问过了,但没有解决我的问题。

我在 table 下面给出了一个 table 名称 categories,这里 parentchild 插入了相同的 table。我想获取父级下的所有子类别。

我的table:

categoryId   categoryName      categorytype  parentCategoryId   status
1            cars                   0              0                1
2            honda city             1              1                1
3            Medical                0              0                1
4            Cancer                 1              4                1
5            bmw                    1              1                1

所以我想像这样获取数据输出:

categoryId   categoryName        parentCategoryId
1            cars                        0       
2            honda city                  1       
5            bmw                         1      
3            Medical                     0       
4            Cancer                      4      

我想做的是 car 是一个 parent 在此下面将列出所有汽车名称。

这是我试过的查询:

SELECT * FROM categories c1 left join categories c2 on c2.categoryId = c1.parentCategoryId;

这个可以用

SELECT c1.* 
FROM categories c1 
LEFT JOIN categories c2 on c2.categoryId = c1.parentCategoryId
ORDER BY COALESCE(c2.categoryId, c1.categoryId), c1.categoryId

编辑

如果根类别是固定的0,不用JOIN

可以更简单
SELECT *
FROM categories
ORDER BY CASE WHEN parentCategoryId = 0 THEN categoryId ELSE parentCategoryId END, categoryId