gpt4 book ai didi

MySQL - 按 ID 自动排序不起作用

转载 作者:行者123 更新时间:2023-11-29 07:19:56 25 4
gpt4 key购买 nike

我使用 MySQL 数据库来存储学生项目(每个项目都有自己的唯一 ID,如第一个屏幕截图所示)。

Screenshot1

“ID”列设置为自动增量主键

所有项目必须(仅)按其 ID 升序排序。但是每次我将一个新项目插入数据库并在“年份”字段中设置较低的值(比我上次插入上一个项目时输入的值低)时,我的项目会自动按此“年份”字段排序(如第二张截图所示)。

Screenshot2

有什么办法,如何设置我的表仅通过“ID”列自动排序所有新添加的项目?是的,我知道我可以在放置每条新记录后使用 ALTER TABLE tablename ORDER BY columnname ASC; 更改顺序,但这可以自动完成吗?

感谢所有提供帮助的人。

最佳答案

问:有什么办法,如何设置我的表仅通过“ID”列自动排序所有新添加的项目?

答:MySQL 表中没有“自动排序”。 (某些存储引擎,例如 InnoDB,是“索引组织”结构,并且确实按簇键按顺序存储行。)但是这种组织没有定义或指定 SELECT 语句返回的行的顺序。

如果 SELECT 语句上没有 ORDER BY 子句,则 MySQL 服务器可以按它选择的任何顺序返回行。不保证任何“自动”或“默认”排序。

当我们运行不带 ORDER BY 子句的 SQL SELECT 语句时,我们确实观察到行往往以一致的顺序返回。此行为不受保证,也不是“自动”的。

我们观察到的这种一致的“排序”行为是由于 MySQL 服务器对一组一致的数据执行了一组一致的操作。

执行 ALTER TABLE 语句来重建整个表不是“自动排序”问题的解决方案。

如果您希望 MySQL 服务器按特定顺序返回行,那么解决方案是在 SELECT 语句中添加 ORDER BY 子句

执行 SELECT 语句的客户端可以自由地对其检索的行执行任何操作。客户端可以执行过滤、排序等操作,以得出用户界面中返回的内容。

某些客户端(如 mysql 命令行)没有实现任何“过滤”或“排序”行的功能,因此客户端指定行返回顺序的唯一方法是 ORDER BY 子句关于声明本身。 (MySQL 命令行客户端按照检索行的顺序在用户界面中返回行。)

我希望 phpMyAdmin 做同样的事情,它按照从 MySQL 服务器返回的相同顺序显示行。

关于MySQL - 按 ID 自动排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553993/

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