>데이터 베이스 >MySQL 튜토리얼 >내 MariaDB 하위 쿼리의 ORDER BY 절이 무시되는 것처럼 보이는 이유는 무엇입니까?

내 MariaDB 하위 쿼리의 ORDER BY 절이 무시되는 것처럼 보이는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-03 18:02:39611검색

Why Does My MariaDB Subquery's ORDER BY Clause Seem to Be Ignored?

MySQL/MariaDB: Order By Subquery Discrepancy

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의 동작

현재 특정 테스트를 사용할 수 없지만 버그 보고서에 대한 의견에 따르면 MySQL 5.6도 MariaDB 10.0.14와 동일한 동작을 나타낼 수 있다고 합니다. , 하위 쿼리 내의 ORDER BY 절을 무시합니다.

위 내용은 내 MariaDB 하위 쿼리의 ORDER BY 절이 무시되는 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.