저는 SQL에 익숙하지 않아 다음과 같은 문제가 있습니다.이 쿼리의 결과를 임의의 레코드를 추출하는 다른 쿼리의 원본으로 사용하려면 어떻게해야합니까?
테이블에서 임의의 레코드를 선택하는 쿼리를 구현하려고합니다.
나는이 흥미로운 기사를 발견했다 :
http://jan.kneschke.de/projects/mysql/order-by-rand/ 그래서 나는이 예제를 다음입니다 : 그것은 좋은 작품을 보인다
SELECT name
FROM random AS r1 JOIN
(SELECT (RAND() *
(SELECT MAX(id)
FROM random)) AS id)
AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 3;
.
이제 내 문제는 내가 상황에 적응하려고하는 것입니다.
SELECT * FROM room_media rm1
JOIN room r ON rm1.id_room = r.id
JOIN room_tipology rt ON r.id_room_tipology_fk = rt.id
where rt.id = 1
:
나는 내 데이터의 소스하지만이 쿼리에 의해 반환 된 레코드의 전체 세트에서 3 임의 reocords를 추출해야하는 대신 임의 테이블로하지 않는 간단한 단일 임의 테이블이
이 쿼리의 결과를 테이블로 간주하고 이전의 임의의 테이블 대신 사용하는 방법은 무엇입니까? 이런 식으로하면 성능 문제가 발생할 수 있습니까?
쿼리가 3 개의 임의의 행을 반환하지 않습니다. 단일 임의 ID에서 시작하여 3 개의 행을 반환합니다. –
@GordonLinoff 첫 번째? – AndreaNobili
@AndreaNobili 예, 첫 번째 쿼리입니다. 이는 링크의 예제 코드에서 직접 설명합니다. 아래로 스크롤하면 링크가 여러 행에 대한 솔루션을 제공합니다. 기본적으로 3 가지 값을 얻을 때까지 설정에 가장 적합한 1 행 검색어를 여러 번 실행합니다 (예 : 구멍이 있거나 ID가없는 경우). 당신은 그 원칙을 당신의 정확한 요구 사항 (절차/기능/프로그래밍 언어)을 사용하고 조정할 수 있습니다. 몇 가지 (빠른) 색인 조회가 필요하기 때문에 이보다 훨씬 빨리 얻는 것이 어렵습니다 (특별한 상황/요구 사항이 필요합니다). – Solarflare