2017-09-22 12 views
-1

単純なMemSQLリストは、クエリがロードされるたびにソートされたシーケンスの結果を示します。MemSQLは各SQL実行に対して異なる結果を表示します

実行ごとに異なる結果についての問い合わせ:realシーケンス(ORDER)のselect * from VENDAS_POR_DIA; 表:

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、それぞれの新しい実行の順序の変更のシーケンスを使用してはいけません。この現象を防ぐ方法。

+1

SQLテーブルと結果セットは、* unordered *の集合を表します。特定の順序で結果を望むなら、 'order by'を使います。 –

+0

私はMySQLで同じクエリを実行しました。同じデータで同じコマンドを実行すると、結果は行が挿入された順番になります。 – calebeaires

+1

常に動作するドキュメンテーションでバックアップされていない限り、一貫性のある動作である*観察された動作に決して依存するべきではありません。 –

答えて

2

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を参照してください。

たとえば、SQL: What is the default Order By of queries?のように、MySQLの動作に関するさらに多くの回答を見ることができます。

関連する問題