我正在尝试按数据升序排序。现在显示我的结果的方式如下:

1:1
1:10
1:2
1:3
1:4
1:5
1:6
1:7
1:8
1:9
2:1


相反,我希望他们像这样:1:1, 1:2, 1:3, 1:4, 1:5, 1:6, 1:7, 1:8, 1:9, 1:10, 2:1.

当前,我的方法是用:替换.。通过在下面的查询中添加+0,我认为它将只是将我的值视为带小数位的整数。关于我在这里缺少什么的任何反馈?

"SELECT myverses.*
FROM myverses
INNER JOIN biblebooks ON myverses.book = biblebooks.name
ORDER BY biblebooks.id ASC, REPLACE(myverses.reference, ':', '.')+0 ASC;";

最佳答案

1.21.20相同,这就是为什么它比1.10高的原因。

您可以使用:

ORDER BY biblebooks.id ASC,
         SUBSTRING_INDEX(myverses.reference, ':', 1)*1000 + SUBSTRING_INDEX(myverses.reference, ':', -1) ASC


这会将1:1转换为1001,将1.10转换为1010,将1.2转换为1002,因此它们将正确排序。

只需使乘数大于一章中的最大经文数即可。

关于mysql - MySQL:按字号排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49417307/

10-14 11:27
查看更多