>  기사  >  데이터 베이스  >  MySQL에서 임의의 하위 집합을 선택하고 특정 필드로 정렬하는 방법은 무엇입니까?

MySQL에서 임의의 하위 집합을 선택하고 특정 필드로 정렬하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-27 06:56:29460검색

How to Select a Random Subset and Sort by a Specific Field in MySQL?

MySQL ORDER BY로 무작위성 보장

대규모 데이터세트를 처리할 때 레코드의 무작위 하위 집합을 추출한 다음 특정 기준에 따라 추가로 정렬해야 하는 경우가 많습니다. MySQL의 ORDER BY 절은 이를 달성하는 기능을 제공합니다.

1000개의 레코드가 있는 데이터베이스 테이블 사용자가 있는 시나리오를 고려해 보겠습니다. 무작위로 20명의 사용자를 선택하고 이름을 기준으로 결과를 오름차순으로 정렬하려면 처음에 다음 쿼리를 사용할 수 있습니다.

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

그러나 이 쿼리는 진정한 무작위 결과를 보장하지 않습니다. ORDER BY rand() 부분은 레코드를 섞지만 WHERE 1 조건은 기본적으로 모든 레코드를 선택하여 무작위성을 취소합니다.

원하는 동작을 달성하기 위해 하위 쿼리를 사용하여 무작위 선택 프로세스를 격리합니다.

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

내부 쿼리는 ORDER BY rand() 및 LIMIT 20을 사용하여 20명의 무작위 사용자를 선택합니다. 그런 다음 외부 쿼리는 ORDER BY name 절을 적용하여 선택한 사용자를 알파벳 순서로 정렬합니다. 이 접근 방식은 원하는 필드별로 정렬된 레코드의 무작위 하위 집합을 생성하여 의도한 결과를 제공합니다.

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

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