2017-09-22 2 views
-1

간단한 MemSQL 목록은 쿼리가로드 될 때마다 정렬 된 순서로 결과를 보여줍니다. 실행마다 다른 결과에MemSQL은 각 SQL 실행마다 다른 결과를 표시합니다.

검색어 : 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, 각각의 새로운 실행에 대한 주문 변경의 순서를 사용 해달라고 할 때. 이 동작을 방지하는 방법.

+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을 참조하십시오.

예를 들어 SQL: What is the default Order By of queries?과 같이 MySQL의 동작에 대해 더 많은 답변을 볼 수 있습니다.

관련 문제