2009-03-12 8 views

답변

3

모든 사용자가 속한 두 번째 테이블이 "사용자"라고 가정합니다. 그렇지 않다면, 당신은 여전히 ​​주문에 또 다른 SELECT DISTINCT 하위 쿼리를 추가하여이 작업을 수행 할 수 있지만, 훨씬 지저분 것 :

SELECT orders.* 
FROM orders 
INNER JOIN (SELECT userid, RAND() as random FROM users) tmp 
ON orders.userid = tmp.userid 
ORDER BY tmp.random, tmp.userid 

당신은 임의의 숫자와 사용자 ID로 주문하는 것이 좋습니다 두 개의 사용자 ID 그렇다면 동일한 난수를 얻으면 명령이 모두 뒤죽박죽이되지는 않습니다.

+0

정확히 내가 무엇을 찾고 있었습니까. 많은 감사! – Gerardo

+0

MS SQL Server에서는 작동하지 않습니다. RAND()는 상수로 평가되고 모든 user_id에 'random'에 대해 동일한 값을줍니다 ... – MatBailie

+0

그는 MySQL을 사용하고 있습니다. –

0

얼마나 무작위입니까? 몇 가지 가능한 대답을 생각해 볼 수 있습니다.

"임의"시퀀스를 반복 할 수있는 경우 사용자가 직접 만든 MD5 또는 맞춤형 사용자 ID를 사용하여 사용자 ID의 해시로 정렬 할 수 있습니다. ORDER BY MD5(), secondary_sort_column.

0

역순으로 정렬 하시겠습니까?

관련 문제