为什么我的 SQL 查询产生了不同的顺序?

Why are my SQL queries yielding a different order?

我有一个 table 这样的:

Name     Seats
101      60
102      40
202      100
201      20

None 的数据可以为空,因此房间的每个名称都会有一个归因于它的座位数。现在这是我的问题:

当我运行这个SQL查询时:

select name from rooms

我得到这个输出:

Name
101      
102      
201      
202      

当我运行这个SQL查询时:

select seats from rooms

我得到这个输出:

Name
60
40
100
20

请注意,在我的第一个查询 select name from rooms 中,table 中值的顺序发生了变化,而在我的第二个查询中,当我要找座位时,顺序仍然有效.为什么会这样?

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

我希望它能维持秩序并输出:

Name    
101      
102      
202      
201      

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

期间。

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

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

可能 select name 查询只读取索引(这称为覆盖查询),而不是 table 本身,从而产生不同的顺序。但原则是你不应该依赖任何特定的顺序,除非它是由最外层查询的 order by 子句指定的。