You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按数字最后3位以每10个为一组的规则排序查询结果?

实现按数字最后三位的个位分组排序的方法

你要的排序逻辑是先把最后三位个位相同的数字归为一组(个位0的排最前,接着个位1,再个位2……),组内再按最后三位的数值从小到大排列。

你原来的SQL有两个问题:

  • 括号位置错误:cast(right(column name, 3) as int / 10) 里的int /10写法错误,应该先把right(column name,3)转成int,再除以10,也就是cast(right(column name, 3) as int) / 10
  • 逻辑不对:你原来的排序是取最后三位的整十位(比如010转成10,001转成0),这会把000、001这类整十位相同的数字排在一起,不符合你要的个位分组需求。

正确的排序语句应该这样写:

ORDER BY
    -- 按最后三位的个位数字升序,将同个位的数字归为一组
    RIGHT(你的列名, 1),
    -- 同组内按最后三位的数值从小到大排序
    CAST(RIGHT(你的列名, 3) AS INT)

如果你的数据库支持取模运算,也可以用取模的方式获取个位数字,效果一致:

ORDER BY
    CAST(RIGHT(你的列名, 3) AS INT) % 10,
    CAST(RIGHT(你的列名, 3) AS INT)

这样就能得到你预期的000, 010, 020, 030, 050, 060, 070, 080, 090, 001, 011...这类排序结果了。

内容的提问来源于stack exchange,提问作者Toffeehammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:42:15