from"的结果顺序与 "select * from"的结果顺序不同-6ren"> from"的结果顺序与 "select * from"的结果顺序不同-我有一个 mysql 数据库,其中有一个表 'difficulties' 和一些记录。如果我执行“select * from difficulties”,我会按照添加的顺序取回它们,按主键 id 排序-6ren">
gpt4 book ai didi

Mysql: "select from"的结果顺序与 "select * from"的结果顺序不同

转载 作者:行者123 更新时间:2023-11-29 01:33:49 26 4
gpt4 key购买 nike

我有一个 mysql 数据库,其中有一个表 'difficulties' 和一些记录。如果我执行“select * from difficulties”,我会按照添加的顺序取回它们,按主键 id 排序:

mysql> select * from difficulties;
+----+-------+-----------+--------+----------+-----------+
| id | value | name | letter | low_band | high_band |
+----+-------+-----------+--------+----------+-----------+
| 1 | 1 | very_easy | VE | 1 | 1 |
| 2 | 2 | easy | E | 2 | 5 |
| 3 | 3 | medium | M | 6 | 10 |
| 4 | 4 | hard | H | 11 | 12 |
| 5 | 0 | na | NA | 0 | 0 |
+----+-------+-----------+--------+----------+-----------+

但是,如果我执行“从困难中选择名称”,我会以不同的顺序取回它们:

mysql> select name from difficulties;
+-----------+
| name |
+-----------+
| easy |
| hard |
| medium |
| na |
| very_easy |
+-----------+

我的问题是:什么决定了这个顺序?这有什么逻辑吗?它是类似于“代表记录的文件恰好在文件系统中的顺序”还是其他任何意图和目的都是随机的?

谢谢,马克斯

最佳答案

这是正确的并且是设计使然:如果您不要求排序,服务器不会为排序而烦恼(排序可能是一项昂贵的操作),并且它将返回中的行它认为合适的任何顺序。如果没有请求的顺序,记录的排序方式甚至可能因一个查询而异(尽管不太可能)。

顺序绝对不是随机的 - 它只是行从查询中出来的任何方式,正如您所见,即使是很小的修改也可以显着改变这种取消顺序。这种“未定义”的顺序依赖于实现,不可预测,不应依赖。

如果您希望对元素进行排序,请使用 ORDER BY 子句(这就是它的目的)- 例如

SELECT name FROM difficulties ORDER BY name ASC;

这将始终返回按名称升序排序的结果。或者,如果您希望它们按主键排序,最后在最上面,请使用:

SELECT name FROM difficulties ORDER BY id DESC;

您甚至可以按功能排序 - 如果您确实想要随机排序,请执行此操作(注意:大型表格的性能很糟糕):

SELECT name FROM difficulties ORDER BY RAND();

更多详情 see this tutorialthe documentation .

关于Mysql: "select <fieldname> from"的结果顺序与 "select * from"的结果顺序不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com