我有一张桌子是这样的,但问题是,每当我试图根据它们从最低到最高的插集数来排序时,我就会得到不同的结果。
id | episode
1 (Title) Episode 1
2 (Title) Episode 4
3 (Title) Episode 2
4 (Title) Episode 5-6
5 (Title) Episode 13
6 (Title) Episode 3
7 (Title) Episode 8-9
8 (Title) Episode 7
9 (Title) Episode 11-12
10 (Title) Episode 10 我试过用这句话ORDER BY LENGTH(**table**.episode),**table**.episode来命令这一集。这是很好的工作,但如果剧集标题包含更多的插集编号,如EP5-6,Episode 8-9,Episode 11-12,则此行将被移至底部。
这是我得到的结果
id | episode
1 (Title) Episode 1
2 (Title) Episode 2
3 (Title) Episode 3
4 (Title) Episode 4
5 (Title) Episode 7
6 (Title) Episode 10
7 (Title) Episode 13
8 (Title) Episode 5-6
9 (Title) Episode 8-9
10 (Title) Episode 11-12 发布于 2015-02-09 04:29:47
这样可以做到:
SELECT *
FROM test2
ORDER BY cast( substring_index( substring_index( title, ' ', -1 ) , '-', 1 ) AS decimal )发布于 2015-02-09 04:10:00
什么是(EpisodeNumber)的数据类型,我相信它是varchar。不建议按varchar进行排序,我将使用DataType int创建一个新列并按其进行排序。我不确定这是否是你想要的解决方案.
https://stackoverflow.com/questions/28402638
复制相似问题