2017-09-22 51 views
-1

簡單的MemSQL列表顯示每次加載查詢時排序序列的結果。在每次運行不同的結果MemSQL對每個sql運行顯示不同的結果

查詢:select * from VENDAS_POR_DIA; 表上real順序(順序):

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表和結果集表示*無序*集。如果您想按特定順序查看結果,請使用'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

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