Mysql 自定义排序SQL

Mysql 自定义排序SQL,mysql,sql,enums,Mysql,Sql,Enums,我想按顺序1,1a,1b,2,2a,2b。。。在很多地方。我正考虑下列方案: 1:为1、1a、1b、2、2a、2b等使用枚举字段。。。这样就可以很好地订购了。缺点是在不同的地方定义这样的枚举 2:创建一个包含两个字段的额外表。值为1、1a、1b、2、2a、2b等的字符串字段。。。在需要排序的任何地方都有一个顺序索引和与该表的并集。缺点是有很多工会 你有什么建议,或者你考虑其他的选择吗?< 谢谢请尝试使用以下代码进行排序: SELECT * FROM t ORDER BY st REGEXP '^

我想按顺序1,1a,1b,2,2a,2b。。。在很多地方。我正考虑下列方案:

1:为1、1a、1b、2、2a、2b等使用枚举字段。。。这样就可以很好地订购了。缺点是在不同的地方定义这样的枚举

2:创建一个包含两个字段的额外表。值为1、1a、1b、2、2a、2b等的字符串字段。。。在需要排序的任何地方都有一个顺序索引和与该表的并集。缺点是有很多工会

你有什么建议,或者你考虑其他的选择吗?<
谢谢

请尝试使用以下代码进行排序:

SELECT * FROM t ORDER BY st REGEXP '^[[:alpha:]].*', st+0, st ;

希望这有帮助

当你说“工会”时,我相信你的意思是加入s?此外,排序是否在所有位置都遵循特定的算法?例如,所有的值都是吗?为什么以及如何使用这些代码?请解释它在做什么,为什么它比问题中已经列出的那些更好。在这种情况下,这不是一个好答案。请阅读更多信息。(作为旁注,此解决方案不适用于大型数据集,因为它阻止服务器使用任何索引来执行排序,这将导致文件排序。)感谢此出色的解决方案!
SELECT * FROM t ORDER BY st REGEXP '^[[:alpha:]].*', st+0, st ;