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'
このクエリは、category と一致する videos_details テーブルのすべてのエントリを返しますが、要件は、where 句のカテゴリのサブカテゴリごとに video_details テーブルから最初の 5 つのエントリのみを取得することです。
構造はこんな感じです 各カテゴリには複数のサブカテゴリがあり、各サブカテゴリには複数のコースがあり、各コースには複数のビデオレコードがあります。
上記のクエリでは、サブカテゴリ列に複数の重複値が含まれるため、各重複値の 5 行のみを取得するにはどうすればよいでしょうか?