집 >데이터 베이스 >MySQL 튜토리얼 >내 MariaDB 하위 쿼리의 ORDER BY 절이 무시되는 것처럼 보이는 이유는 무엇입니까?
MySQL 5.5 이전 버전에서는 하위 쿼리가 ORDER BY 절을 준수했습니다. 그러나 이 동작은 MariaDB 10.0.14를 포함한 최신 버전에서 변경되었습니다.
MariaDB 10.0.14에서 다음 쿼리를 실행할 때:
SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
결과는 이제 예상되는 내림차순과 달리 오름차순(또는 자연순)으로 정렬됩니다.
MariaDB의 문서를 검토한 결과 관찰된 동작은 버그로 간주되지 않습니다. SQL 표준에 따르면 테이블과 하위 쿼리는 순서가 지정되지 않은 행 집합입니다. 따라서 최적화 프로그램은 하위 쿼리 내의 ORDER BY 절을 무시하도록 선택할 수 있습니다.
결과의 일관된 순서를 보장하려면 외부 쿼리에 ORDER BY 절을 적용하는 것이 좋습니다. :
SELECT t2.Code from (select Country.Code from Country) AS t2 ORDER BY t2.Code DESC;
또는 하위 쿼리 내에서 LIMIT 절을 사용하면 ORDER BY를 강제로 수행할 수도 있습니다. 적용 예정:
SELECT t2.Code from (select Country.Code from Country ORDER BY Country.Code DESC LIMIT 2) AS t2;
현재 특정 테스트를 사용할 수 없지만 버그 보고서에 대한 의견에 따르면 MySQL 5.6도 MariaDB 10.0.14와 동일한 동작을 나타낼 수 있다고 합니다. , 하위 쿼리 내의 ORDER BY 절을 무시합니다.
위 내용은 내 MariaDB 하위 쿼리의 ORDER BY 절이 무시되는 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!