MySQL에서 무작위 선택에 가중치 부여
대규모 데이터세트로 작업할 때 관련 가중치를 고려하면서 항목을 무작위로 선택해야 할 수도 있습니다. 각 항목마다. MySQL에서는 함수와 가중치 승수의 조합을 사용하여 이를 달성할 수 있습니다.
테이블에서 단일 항목을 선택하려면 SELECT 문을 사용하세요. 선택 항목을 무작위로 지정하려면 RAND() 함수를 사용하십시오. 그러나 가중치를 적용하려면 추가 단계가 필요합니다.
항목이 있는 테이블과 해당 항목의 가중치를 나타내는 "승수" 열을 생각해 보세요. 승수가 더 높은 항목에 선택 가중치를 부여하려면 다음 구문을 사용하여 명령문을 수정합니다.
SELECT * FROM table_name ORDER BY -LOG(1.0 - RAND()) / Multiplier LIMIT 1;
이 표현식에서 ORDER BY 절은 계산된 값의 오름차순으로 결과를 정렬합니다. 값은 0과 1 사이의 난수의 음의 로그를 승수로 나누어 파생됩니다. 승수가 더 높은 항목은 계산된 값이 더 작아지고 정렬된 목록에서 더 일찍 나타납니다. 그런 다음 LIMIT 1 절은 최상위 항목을 가중치가 적용된 무작위 선택으로 선택합니다.
이 방법은 승수 값 0의 영향을 받지 않습니다. 승수가 0이어도 여전히 항목이 항목 끝에 표시되기 때문입니다. 정렬된 목록. 원하는 경우 WHERE 절을 사용하여 승수가 0인 항목을 선택에서 제외할 수 있습니다.
SELECT * FROM table_name WHERE Multiplier > 0 ORDER BY -LOG(1.0 - RAND()) / Multiplier LIMIT 1;
위 내용은 MySQL에서 무작위 선택에 가중치를 부여하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!