MySQL:按诗歌编号排序

时间:2018-03-21 22:06:29

标签: mysql

我尝试按升序排序数据。以下是我的结果显示方式:

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 个答案:

答案 0 :(得分:1)

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,这样它们才能正确排序。< / p>

只需使乘数大于章节中的最大经文数。