我有两个具有此类结构的类别表
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
,但未按要求返回。 谢谢
答案 0 :(得分:0)
此处的技巧是确定自定义排序参数。如果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