我尝试按升序排序数据。以下是我的结果显示方式:
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;";
答案 0 :(得分:1)
1.2
与1.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>
只需使乘数大于章节中的最大经文数。