2013-03-28 3 views
0
SELECT cat.category, cr.course, subcat.subcategory, vd.video_title, vd.video_length, vd.video_id 
    FROM category As cat 
    INNER JOIN subcategory as subcat 
    ON cat.parent_id=subcat.parent_id 
    INNER JOIN courses As cr 
    ON cr.child_id=subcat.child_id 
    INNER JOIN video_details AS vd 
    ON vd.course_id=cr.course_id 
    WHERE cat.category='Engineering' 

이 쿼리는 videos_details 테이블의 카테고리와 일치하는 모든 항목을 반환하지만 은 where 하위 절의 각 하위 범주에 대해 video_details 테이블의 처음 5 개 항목 만 가져 오는 것입니다.중복 된 항목이있는 행을 몇 개 선택하는 방법은 무엇입니까?

구조는 여러 하위 이 존재하고 각 하위 여러 비디오 레코드가 각 코스 다회 있다 각 카테고리이 같다.

위의 쿼리에는 하위 범주 열에 여러 개의 중복 값이 ​​있으므로 각 중복 값의 행을 5 개만 얻으려면 어떻게해야합니까?

답변

0

LIMIT 키워드 쿼리에서 바로 첫번째 5 (또는 10 또는 무엇이든) 행을 가져올 수 있습니다, 그래서 제대로 요구 사항을 이해하면 당신은 하위 쿼리의상의 INNER JOINvideo_detailsINNER JOIN을 변경할 수 있습니다 video_details은 처음 5 개의 행만 가져옵니다.

이 방법이 유용할까요? 변경 사항은 세 번째 행부터 마지막 ​​행까지입니다.

SELECT cat.category, cr.course, subcat.subcategory, vd.video_title, vd.video_length, vd.video_id 
    FROM category As cat 
    INNER JOIN subcategory as subcat 
    ON cat.parent_id=subcat.parent_id 
    INNER JOIN courses As cr 
    ON cr.child_id=subcat.child_id 
    INNER JOIN (SELECT course FROM video_details LIMIT 5) vd 
    ON vd.course_id=cr.course_id 
    WHERE cat.category='Engineering' 
관련 문제