2 개의 테이블이 있습니다. '그룹'및 '값'.SQL 임의의 행을 선택할 때 도움말 가입
SELECT *
FROM groups as g
inner JOIN
(
SELECT * FROM values as v WHERE v.groupid = g.id ORDER BY RAND() LIMIT 1
) AS rv ON rv.groupid = g.id
V 나던 내가 일을 할 수있는 방법 g에 대한 액세스 권한을 갖고있는 것 같다 : 나는 values.groupid = groups.id
내가 가진 쿼리는 값 테이블에서 하나 개의 임의 행을 선택하려고 이 주변? 무작위에 관해서는, 나는 단지 value.id의 삭제 될 수 있기 때문에 일하는 한계 1 해결책을 얻을 수 있었고 작은 테이블 (최대 200 행만 가능)이었습니다. 조인 만 사용하고 조인 내부에 where 절이 없으면 모든 그룹에서 임의의 값을 선택하거나 아무 것도 반환하지 않습니다. 누구든지 나를 도울 수 있습니까?
편집 : 이 늘 작업 중 하나를 내가하지만, 아무도 실제로 각 그룹의 값에 가입을하려고하지 않습니다 매우 유사한 다른 많은 질문을 참조
SELECT g.*
,(SELECT * FROM v ORDER BY RAND() LIMIT 1)
FROM groups AS g
JOIN
(
SELECT * FROM values
) AS v ON v.groupid = g.id
이 시간 외부에서 V를 액세스 할 수 없기 때문에 효과 .. 제가 누락 된 사람이라면 그냥 언급 해주세요. 나는 문제를 삭제할 것이고, 나는 계속해서 다른 사람들을 볼 것입니다. 그러나 뜻있는 시간에 나는 여전히 도움이 필요합니다. 데이터 집합 정말 작은하지 않는 한
다음은
난 그냥 테스트 솔루션을, 그리고 각 그룹에서 한 임의의 행을 선택하기 위해 노력/blog/2009/08/11/mysql-select-random-row-with-join/ – Chris값 테이블에 "기본"키 식별자가 있습니까? 그렇다면 열 이름이 무엇입니까? – DRapp