id| name | created_at
—-----------------------------
1 | name 1 | 2017-05-20
2 | name 2 | 2017-05-22
3 | name 66 | 2017-05-24
4 | name 44 | 2017-05-25
我有一个订单表
我必须按名称列中的数字对其进行排序
喜欢
id| name | created_at
—-----------------------------
1 | name 66 | 2017-05-20
2 | name 44 | 2017-05-22
3 | name 2 | 2017-05-24
4 | name 1 | 2017-05-25
我尝试过SELECT * FROM Orders ORDER BY name DESC;
但没有运气;
我该怎么做?
最佳答案
如果所有名称均采用名称、空格、数字
格式,则可以使用此查询。 SUBSTRING_INDEX
提取从最后一个空格到末尾的字符,然后它们是 CAST
作为无符号整数,这允许对它们进行排序。
SELECT *
FROM Orders
ORDER BY CAST(SUBSTRING_INDEX(name, ' ', -1) AS UNSIGNED) DESC
输出:
id name created_at
3 name 66 2017-05-24
4 name 44 2017-05-25
2 name 2 2017-05-22
1 name 1 2017-05-20
关于mysql - SQL 按列中的数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51782416/