gpt4 book ai didi

mysql - 如何在MySQL中通过两个参数对分层表进行排序?

转载 作者:行者123 更新时间:2023-11-29 11:59:05 25 4
gpt4 key购买 nike

我有一个表,其中包含一些分层数据。我已经通过使用触发器计算路径以分层方式处理了排序,但现在我也想使用另一个参数对它们进行排序。看看这些图片:

这是包含按路径排序的分层数据的表:

enter image description here

我希望这两行交换,因为行 ID = 4 在行 ID = 2 之前有一个日期:

enter image description here

那么如何按日期列对每个级别进行排序?

注意:ID 是由触发器生成的随机数。

最佳答案

您可以使用FIND_IN_SET以便提取每一行的层次结构级别。然后在 ORDER BY 子句中使用它:

SELECT ID, Name, ParentId, Date, Path
FROM mytable
ORDER BY FIND_IN_SET(ID, REPLACE(Path, '.', ',')), Date

注意:我们必须使用REPLACE函数将'.'字符替换为','以便 FIND_IN_SET 按预期工作。

Demo here

或者,您可以修改触发器以生成额外的“级别”字段,并在查询的 ORDER BY 子句中使用该字段。

关于mysql - 如何在MySQL中通过两个参数对分层表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32680749/

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