【问题标题】:MemSQL shows different results to each sql runMemSQL 对每个 sql 运行显示不同的结果
【发布时间】:2017-09-22 11:32:12
【问题描述】:

一个简单的 MemSQL 列表在每次加载查询时按排序顺序显示结果。

查询每次运行的不同结果:select * from VENDAS_POR_DIA; real 序列上的表(ORDER):

MySQL [bucket_8]> select * from VENDAS_POR_DIA order by 1;
+------------+------+
| data_envio | qtde |
+------------+------+
| 2017-09-04 |   63 |
| 2017-09-05 |   48 |
| 2017-09-06 |  813 |
| 2017-09-07 |  177 |
| 2017-09-08 |  679 |
| 2017-09-09 | 1034 |
| 2017-09-10 |   76 |
| 2017-09-11 |  332 |
| 2017-09-12 |  542 |
| 2017-09-13 |  414 |
| 2017-09-14 |  366 |
| 2017-09-15 |  517 |
| 2017-09-16 |  197 |
| 2017-09-17 |   23 |
| 2017-09-18 |  346 |
| 2017-09-19 |  520 |
| 2017-09-20 |  149 |
| 2017-09-21 |  288 |
+------------+------+
18 rows in set (0.20 sec)

但是当我不使用 ORDER BY 时,每次新运行的顺序都会改变。如何防止这种行为。

【问题讨论】:

  • SQL 表和结果集代表 无序 集。如果您希望结果按特定顺序排列,请使用order by
  • 我在 MySQL 上执行了相同的查询,如果我使用相同的数据运行相同的命令,结果与插入行的顺序不同。
  • 你不应该依赖 observed 行为是一致的行为,除非它有文档支持它总是有效的。

标签: sql sql-order-by singlestore


【解决方案1】:

如果您不使用 ORDER BY,您可能会以任何顺序获得结果 - 排序是未指定的,并且不同的数据库可能会根据它们的实现给出或不给出某些命令。 MySQL 碰巧在某些情况下以某种顺序为您提供结果,但这不是语义保证。如果要订购,必须指定 ORDER BY。

参见https://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html(“结果行不按特定顺序显示”)和https://docs.memsql.com/concepts/v5.8/mysql-features-unsupported-in-memsql/#behavior-differences

您可以看到更多关于 MySQL 行为的答案,例如:SQL: What is the default Order By of queries?

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 2016-12-28
    • 2015-03-09
    • 2020-12-16
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多