gpt4 book ai didi

php - 具有多个 INNER JOIN 的 MySQL ORDER BY

转载 作者:可可西里 更新时间:2023-11-01 08:51:39 26 4
gpt4 key购买 nike

我似乎无法弄清楚如何在此 MySQL 选择中进行排序。我希望你能帮助我。

标签:

类别

catId, catParentId, catDisplay
1 0 1
2 0 1
3 0 1
4 1 1
5 1 1

类别_翻译

transId, catId, catName, catDesc, langId
1 1 Title1 Desc1 1
2 2 Title2 Desc2 1
3 3 Title3 Desc3 1
4 4 Title4 Desc4 1
5 5 Title5 Desc5 1

语言

langId, langName, langCode
1 Danish da
2 English en

我的查询:

SELECT `categories`.`catId`,
`categories`.`catParentId`,
`categories`.`catDisplay`,
`categories_translation`.`catName`,
`categories_translation`.`catDesc`,
`language`.`langCode`
FROM `categories`
INNER JOIN `categories_translation` ON `categories_translation`.`catId` = `categories`.`catId`
INNER JOIN `language` ON `language`.`langId` = `categories_translation`.`langId`
WHERE `language`.`langCode` = 'da'

现在,我得到了我想要的返回值,但是有没有一种方法可以将子类别排序给它们的父类别,所以结果如下所示:

期望的结果:

catId | catParentId | catDisplay | catName | catDesc | langCode
1 0 1 Title1 Desc1 da
4 1 1 Title4 Desc4 da
5 1 1 Title5 Desc5 da
2 0 1 Title2 Desc2 da
3 0 1 Title3 Desc3 da

我试过 order by,但似乎可以得到我想要的结果。

最佳答案

尝试以下操作:

ORDER BY
CASE WHEN categories.catParentId = 0 THEN
categories.catId
ELSE
categories.catParentId
END,
CASE WHEN categories.catParentId = 0 THEN
0
ELSE
categories.catId
END

对于那些没有得到排序的人来说,将期望的结果想象成这样会更容易:

catId | catParentId | orderingCategory
1 0 1.0
4 1 1.4
5 1 1.5
2 0 2.0
3 0 3.0

所以这是一个类别层次结构,OP 想要对结果进行排序,以便每个父类别后面都有它们的子类别。

关于php - 具有多个 INNER JOIN 的 MySQL ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com