SELECT 如何返回未排序的结果集?

Rah*_*rma 1 mysql sql

当我访问此链接时,我只是想以相反的顺序显示 SELECT 查询的结果集: Select last row in MySQL

在一个答案中提到关系数据库没有第一行或最后一行。所以我的问题是,如果我们输入SELECT * FROM table_name,结果集是否必须与数据输入数据库的顺序相同?

另外,如果有人能告诉我如何在 PHP 中以相反的顺序显示上述查询的结果(在查询本身中不使用任何排序),那就太好了。

Gor*_*off 5

SQL 表表示无序集。表中没有排序,除非用户指定排序。order bySQL 结果集表示无序集,除非最外层有。这就是语言的定义方式。

因此,当您使用selectno执行 aorder by时,无法保证行的顺序。在许多情况下,顺序看起来像插入顺序,但您不能保证这一点。

有很多因素会影响 select 返回的顺序,例如:

  • 多线程数据库有独立的进程读取数据。
  • 底层页面缓存机制不需要按顺序读取页面。
  • 删除和后续插入会混淆行。
  • 查询可能通过索引而不是表扫描来满足。

如果您希望行按特定顺序排列,请使用order by