是的,标题令人困惑,但我会保持简单。想象一个照片页面,上面有评论。这些评论可以通过回复它们来嵌套。我需要为他们找到正确的排序顺序。
我使用“谱系”存储这些层次结构。它是层次结构中单个评论位置的文本、扁平化值。这是一个正确排序的线程。我只显示沿袭列:
903 903 是第一条评论,909 是第二条评论。 1404是对第二条评论的回复,最后,1405是最后一条评论,未回复。这是他们应该如何排序。不过,我正在努力达到那个结果。如果我只是这样做,这就是我得到的: 按血统排序 1405 这里的错误是1405应该在底部。我知道 (+0) 技巧可以像数字一样对文本进行排序: 排序方式(血统+0) 这给了我这个: 903 这一次,线程评论 (1404) 排序错误,它应该排在父评论 (909) 之后。 有没有一种简单的方法可以完成我想要的排序?我唯一能想到的就是在前面用零填充评论 ID,但这将是一个非常痛苦的迁移过程,我非常想避免。
909
909-1404
第1405章
903
909
909-1404
909-1404
909
第1405章
最佳答案
ORDER BY CAST(REPLACE(lineage,"-",".") AS DOUBLE)
903
909
909.1404
1405
但是您的“沿袭”可能不是在关系数据库中存储数据之间关系的最佳方式……也许考虑规范化?
关于Mysql 按分层文本排序,但按数字排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6707882/