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

标签 mysql sql

当我访问这个链接时,我正试图以相反的顺序显示 SELECT 查询的结果集: Select last row in MySQL

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

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

最佳答案

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

因此,当您执行没有order byselect 时,您无法保证行的顺序。在许多情况下,顺序看起来像插入顺序,但您不能保证这一点。

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

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

如果您想要按特定顺序排列的行,请使用order by

关于mysql - SELECT 如何返回未排序的结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369418/

相关文章:

php - 如何在输入字段中显示查询结果的多个值?

mysql - 函数SQL错误代码: 1046

php - Mysql存储不正确的编码字符

python - 如何通过避免行名称等来仅打印数据库中的值(在 Django 中)

PHP:连接表查询以创建类别和子类别?

php - 如何在yii中保存之前检查sql查询

sql - 如何将H2主键ID设置为auto_increment?

c# - 从 SqlCommand 对象发送什么 SQL

mysql - 在 SHELL BASH 脚本中获取外部 WHILE 变量

SQL获取整数后两位