首页 > 解决方案 > 为什么我的 SQL 查询会产生不同的顺序?

问题描述

我有一张这样的桌子:

Name     Seats
101      60
102      40
202      100
201      20

任何数据都不能为空,因此房间的每个名称都将有一个归属的座位数。现在这是我的问题:

当我运行这个 SQL 查询时:

select name from rooms

我得到这个输出:

Name
101      
102      
201      
202      

当我运行这个 SQL 查询时:

select seats from rooms

我得到这个输出:

Name
60
40
100
20

请注意,在我的第一个查询select name from rooms中,表中值的顺序发生了变化,而在我的第二个查询中,当我要找座位时,顺序保持不变。为什么会这样?

如何修复我的 SQL 查询,使其不会重新排序我的房间名称?

我希望它保持秩序并输出:

Name    
101      
102      
202      
201      

标签: mysqlsqlsql-order-byderby

解决方案


SQL 表表示无序集。SQL 结果集是无序的,除非有明确的ORDER BY对应于最外层SELECT

时期。

如果您没有ORDER BY,则您不应该对结果的排序有任何期望。排序可以从一次运行更改为另一次。

而且,即使您有ORDER BY, 如果您有 tie(即具有相同值的键),那么它们可以从一个运行到下一个运行任意排序。


推荐阅读