행을 무작위 순서로 출력하는 MySQL 쿼리가 있습니다.
각 행에는 동일한 값을 가진 name 列,有时查询可能会产生重复的行(name 행이 있습니다. 이는 의도적으로 설계된 것입니다. < /p>
name
그러나 쿼리가 실수로 출력에서 중복 행을 직접 그룹화하는 경우가 있습니다.
중복 행이 실수로 그룹화되지 않도록 출력에서 이름이 중복된 행을 균등하게 분배하는 방법을 찾으려고 합니다.
이를 달성하는 한 가지 방법은 이름이 같은 행이 출력 전체에 고르게 분산되도록 추가 정렬 기준을 포함하도록 MySQL 쿼리를 수정하는 것입니다.
이를 수행하기 위한 샘플 쿼리는 다음과 같습니다.
이 쿼리는 먼저 이름을 기준으로 행을 정렬한 다음 RAND() 함수에서 생성된 임의의 값을 기준으로 정렬합니다. 무작위 값은 동일한 이름을 가진 행이 함께 그룹화되지 않고 출력 전체에 무작위로 분산되도록 보장합니다.
ORDER BY 절에 RAND() 함수를 사용하면 계산 비용이 많이 들고 큰 테이블에서는 확장이 잘 되지 않을 수 있습니다. 이 경우 유사한 결과를 얻기 위해 다른 결정적 함수(예: 이름의 MD5 해시)를 사용하는 것을 고려할 수 있습니다.
이 쿼리는 먼저 이름의 MD5 해시를 기준으로 행을 정렬한 다음 RAND() 함수에서 생성된 임의의 값을 기준으로 정렬합니다. MD5 해시는 동일한 이름을 가진 행이 출력 전체에 고르게 분산되도록 하고, 임의 값은 행 순서가 무작위임을 보장합니다.
이를 달성하는 한 가지 방법은 이름이 같은 행이 출력 전체에 고르게 분산되도록 추가 정렬 기준을 포함하도록 MySQL 쿼리를 수정하는 것입니다.
이를 수행하기 위한 샘플 쿼리는 다음과 같습니다.
으아악이 쿼리는 먼저 이름을 기준으로 행을 정렬한 다음 RAND() 함수에서 생성된 임의의 값을 기준으로 정렬합니다. 무작위 값은 동일한 이름을 가진 행이 함께 그룹화되지 않고 출력 전체에 무작위로 분산되도록 보장합니다.
ORDER BY 절에 RAND() 함수를 사용하면 계산 비용이 많이 들고 큰 테이블에서는 확장이 잘 되지 않을 수 있습니다. 이 경우 유사한 결과를 얻기 위해 다른 결정적 함수(예: 이름의 MD5 해시)를 사용하는 것을 고려할 수 있습니다.
으아악이 쿼리는 먼저 이름의 MD5 해시를 기준으로 행을 정렬한 다음 RAND() 함수에서 생성된 임의의 값을 기준으로 정렬합니다. MD5 해시는 동일한 이름을 가진 행이 출력 전체에 고르게 분산되도록 하고, 임의 값은 행 순서가 무작위임을 보장합니다.