join mysql上的按父子关系排序

h6my8fg2  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(532)

我有两个分类表的结构是这样的

category:- Id Name
category_detail: category_Id parent_Id

日期类似于此类别

1  Laptop  
2  Mobile
3  HP
4  LG
5  Nokia
6  Sony
7  DELL
category_det
1  0
2  0
3  1
4  2
5  2
6  2
7  1

I want result like this
1 Laptop
3 HP
7 DELL
2 Mobile
4 LG
5 Nokia
6 Sony

    SELECT `Id`,`Name` FROM `category` 
    INNER JOIN category_det ON category_det.category_Id = category.Id
 COALESCE(category_det.parent_Id, category.Id),  cateory.Id

但这并没有按要求返回。谢谢

ih99xse1

ih99xse11#

这里的技巧是确定一个自定义排序参数。如果 parent_id 值为0,我们可以简单地使用 category_id 要排序的值;否则 parent_id 价值观。这是因为 parent_id 其他级别的值与 category_id 为了父母。
我们还将使用多个级别 Order By ,使用 category_id .
你可以这样做:

SELECT 
  cd.category_id, 
  c.name 
FROM 
  category AS c 
JOIN category_detail AS cd ON c.id = cd.category_id  
ORDER BY 
  CASE WHEN cd.parent_id = 0 THEN cd.category_id 
       ELSE cd.parent_id 
  END
  , cd.category_id

相关问题