>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 무작위 하위 집합을 선택한 다음 다른 열을 기준으로 정렬하는 방법은 무엇입니까?

MySQL에서 무작위 하위 집합을 선택한 다음 다른 열을 기준으로 정렬하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 06:04:31751검색

 How to Select a Random Subset and Then Order by Another Column in MySQL?

MySQL의 무작위 선택 및 순서

MySQL 데이터베이스를 쿼리할 때 레코드의 하위 집합을 무작위로 선택하는 것이 일반적입니다. 이를 달성하기 위해 ORDER BY RAND() 절을 사용할 수 있습니다. 그러나 이 절을 다른 순서 절과 결합할 때는 작업 순서를 고려하는 것이 중요합니다.

기록의 무작위 하위 집합을 선택한 다음 결과 집합을 다른 열을 기준으로 정렬하려고 할 때 흔히 발생하는 함정 중 하나가 있습니다. 다음 쿼리는 이에 대한 예입니다.

SELECT * FROM users WHERE 1 ORDER BY RAND(), name ASC LIMIT 20

이 쿼리의 의도는 사용자 테이블에서 무작위로 20명의 사용자를 선택한 다음 이름 열을 기준으로 오름차순으로 정렬하는 것입니다. 그러나 이 쿼리는 원하는 결과를 얻지 못합니다.

그 이유는 ORDER BY RAND() 절이 비결정적 순서를 도입하기 때문입니다. 즉, 쿼리가 실행될 때마다 결과의 순서가 변경됩니다. 결과적으로 후속 이름 ASC 절을 사용하여 결과를 안정적으로 정렬할 수 없습니다.

결과를 올바르게 정렬하려면 하위 쿼리를 사용해야 합니다. 다음 쿼리는 무작위로 20명의 사용자를 선택한 다음 이름 열을 기준으로 정렬합니다.

SELECT * FROM 
(
    SELECT * FROM users ORDER BY RAND() LIMIT 20
) T1
ORDER BY name 

내부 쿼리는 무작위로 20명의 사용자를 선택하고 결과를 임시 테이블 T1에 저장합니다. 그런 다음 외부 쿼리는 T1의 모든 행을 선택하고 이름별로 정렬합니다.

위 내용은 MySQL에서 무작위 하위 집합을 선택한 다음 다른 열을 기준으로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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