我有这些示例course_numbers
cmsc 11
cmsc 2
cmsc 56
cmsc 21
cmsc 128
我使用此查询
SELECT * FROM subject ORDER BY LENGTH(`course_number`)
自然对结果进行排序
并且它有效,但是当我添加这些course_numbers时
it 1
it 256
it 20
他们有点搞砸了。
我应该使用什么查询来订购这些
cmsc 2
cmsc 11
cmsc 21
cmsc 56
cmsc 128
it 1
it 11
it 20
it 100
it 256
我在他们的选择陈述中搜索并看到'案例',但我不知道如何使用它们
答案 0 :(得分:1)
您应该考虑拆分课程编号的两个部分,因为“CMSC”/“IT”是一个部分(即使长度可变),实数是另一部分。如果将数字存储在数字列(int)中,则可以轻松纠正它们。
所以它会是
SELECT concat(course_type, " ", course_subnumber) as course_number, ...
from subject
order by course_type, course_subnumber
只要你有点运气,你可以尝试与你一起构建以下内容:
SELECT * from subject
order by left(course_number, 2), length(course_number), course_number
如果不同的course_types以相同的两个字母开头,那么你只会遇到麻烦。