mysql - SQL 按列中的数字排序

标签 mysql sql

 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/

相关文章:

javascript - JQuery从MySQL获取数据并存储到变量中

mysql - cakephp + phpunit + gitlab 持续集成

php - 全局通知的数据库设计

sql - 按 VARIANT 列加入或分组 : a good practice?

php - 如何从一个表中选择具有同一表中其他行的特定ID的行

php - MySQL – 我应该使用 last_insert_id() 吗?或者是其他东西?

sql - 插入带分号的字符串值会导致错误

mysql - 可串行化冲突以及为什么 2 次读取不冲突?

sql - 如何将 SQL Server 2012 数据库复制到 localdb 实例?

SQL建表错误