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

Mysql 为什么我的SQL查询产生不同的顺序?,mysql,sql,sql-order-by,derby,Mysql,Sql,Sql Order By,Derby,我有一张这样的桌子: Name Seats 101 60 102 40 202 100 201 20 所有数据都不能为空,因此每个房间的名称都有一个属性化的座位数。现在我的问题是: 运行此SQL查询时: select name from rooms select seats from rooms 我得到这个输出: Name 101 102 201 202 Name 60 40 100 20

我有一张这样的桌子:

Name     Seats
101      60
102      40
202      100
201      20
所有数据都不能为空,因此每个房间的名称都有一个属性化的座位数。现在我的问题是:

运行此SQL查询时:

select name from rooms
select seats from rooms
我得到这个输出:

Name
101      
102      
201      
202      
Name
60
40
100
20
运行此SQL查询时:

select name from rooms
select seats from rooms
我得到这个输出:

Name
101      
102      
201      
202      
Name
60
40
100
20
请注意,在我的第一次查询中,表中值的顺序发生了变化,而在我的第二次查询中,当我去座位时,顺序仍然是“颁布”。为什么会这样

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

我希望它能够维持秩序并输出以下内容:

Name    
101      
102      
202      
201      
SQL表表示无序集。SQL结果集是无序的,除非存在与最外层的选择相对应的显式排序依据

句号

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

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

SQL表表示无序集。SQL结果集是无序的,除非存在与最外层的选择相对应的显式排序依据

句号

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



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

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

很可能
select name
查询只读取索引(称为覆盖查询),而不是表本身,从而生成不同的顺序。但原则是,除了由最外层查询的order by子句指定外,您永远不应该依赖任何特定的顺序。

没有order by子句的SELECT语句返回的行的顺序是未定义的。@forpas我明白了,所以我想我一直都很幸运,没有order by子句的SELECT语句返回的行的顺序是未定义的。@forpas我明白了,所以我想我一直都很幸运,所以我一直都很幸运,知道如何使这两个查询以相同的顺序排列吗?我不确定我能点什么来搭配它们up@JohnnyRobertson . . . 包括按订购的
,例如按姓名订购的
。哦,是的,我知道了,谢谢@是的,你很幸运。只要确保你在需要的时候明确要求订购就行了。所以我一直都很幸运,那么你知道如何让这两个查询以相同的顺序排列吗?我不确定我能点什么来搭配它们up@JohnnyRobertson . . . 包括按
订购的
,例如按姓名订购的
。哦,是的,我知道了,谢谢@是的,你很幸运。只需确保在需要时明确要求订购。是的,它看起来像是按照订单101->102->201->202订购的。是的,它看起来像是按照订单101->102->201->202订购的