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

未指定ORDER BY时,SQL查询返回的主键id顺序是否固定?

关于SQL查询结果行顺序的疑问

我执行了如下SQL查询:

select id from table_xx where name='aaa'

对应的表table_xx结构及数据如下:

idname
1aaa
2bbb
3aaa

注:id是主键(primary key)。

当我运行如下代码时:

result = execute_query(query)
print(result[0][0])

请问该查询是否始终返回最小的id(即id=1)作为结果集中的第一行?还是存在返回id=3作为第一行的可能?


回答

存在返回id=3作为第一行的可能,不会始终返回id=1。

原因很明确:SQL标准里规定,只要查询语句没加ORDER BY子句,结果的行顺序就是未定义的。数据库会根据自身的执行计划、数据存储状态、优化策略等,以任意顺序返回符合条件的行。

哪怕id是主键,数据库底层基于主键建了索引,也不代表查询一定会按主键升序返回结果——优化器可能选择更高效的执行路径,导致结果顺序和主键顺序不一致。

如果想要确保始终拿到最小的id,必须在查询里显式指定排序规则,修改后的语句如下:

select id from table_xx where name='aaa' order by id asc

内容的提问来源于stack exchange,提问作者Mr.Cocococo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:10:25