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

如何让SQL查询生成的数字序列按正确顺序返回?

问题成因

SQL执行规则中,未显式添加ORDER BY子句的查询,数据库不会保证返回结果的行顺序。你通过两个数字集做笛卡尔积生成1-100连续序列的写法逻辑完全正确,结果乱序是数据库按照自身执行计划(例如联表读取顺序、内部数据存取路径)返回数据导致的,属于SQL的固有特性,并非语法错误。

修复方法

在查询末尾追加显式排序规则,指定按计算得到的数值升序返回即可,修正后的完整SQL如下:

SELECT ones.num + tens.num + 1 AS seq_num
FROM
 (SELECT 0 num UNION ALL
  SELECT 1 num UNION ALL
  SELECT 2 num UNION ALL
  SELECT 3 num UNION ALL
  SELECT 4 num UNION ALL
  SELECT 5 num UNION ALL
  SELECT 6 num UNION ALL
  SELECT 7 num UNION ALL
  SELECT 8 num UNION ALL
  SELECT 9 num
 ) ones
CROSS JOIN
 (SELECT 0 num UNION ALL
  SELECT 10 num UNION ALL
  SELECT 20 num UNION ALL
  SELECT 30 num UNION ALL
  SELECT 40 num UNION ALL
  SELECT 50 num UNION ALL
  SELECT 60 num UNION ALL
  SELECT 70 num UNION ALL
  SELECT 80 num UNION ALL
  SELECT 90 num
 ) tens
ORDER BY seq_num ASC;

你也可以不给计算列设置别名,直接在ORDER BY后写计算表达式ones.num + tens.num + 1 ASC,最终返回效果完全一致,执行后结果会严格按照1到100的升序排列,不会再出现顺序错乱的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:24:15