MYSQL高级排序

标签 mysql sorting group-by sql-order-by

我有一个充满 id (tID) 的表,这些表的开头是“w”,后跟一个数字 (int)、一个点和另一个数字 (int)。

sample 编号:

w1.3, w1.12, w1.1, w1.1, w2.10, w2.4

当我使用 ORDER BY tID 时,返回的数组是

w1.1, w1.12, w1.2, w1.3, w2.10, w2.4.

我愿意这样

w1.1, w1.2, w1.3, w1.12, w2.4, w2.10

这在 MYSQL 查询中可能吗?

最佳答案

是的,这是可能的。但是你应该考虑只存储 2 个整数,没有 w 并且在 2 列中。

同时,你可以使用这个:

ORDER BY
    CAST(SUBSTRING_INDEX(REPLACE(tID, 'w', ''), '.', 1) AS SIGNED INT)
  , CAST(SUBSTRING_INDEX(tID, '.', -1) AS SIGNED INT)

关于MYSQL高级排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873093/

相关文章:

sql - 查找窗口中 n 个类别之间的变化之前的最大值(类别之间有 m>n 个变化)

MySQL 两个表最小值和分组依据

mysql - SELECT/GROUP BY - 时间段(10 秒、30 秒等)

php - 如何在 Magento 的销售/订单网格中添加自定义列?

没有这个子查询并且没有限制偏移量的Mysql优化

php - 国家和城市下拉列表

java - 插入排序、合并排序和快速排序的测试用例

Java 数组排序 : Quick way to get a sorted list of indices of an array

mysql - 通过ruby脚本防止SQL注入(inject)

algorithm - 使用预定义的排序值列表对对象进行排序