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 表中与类别匹配的所有条目,但要求仅从 video_details 表中为 where 子句中的类别的每个子类别获取前五个条目。

结构是这样的 每个类别有多个子类别,每个子类别有多个课程,每个课程有多个视频记录。

上面的查询在子类别列中会有多个重复值,那么我怎样才能得到每个重复值只有五行呢?

4

1 回答 1

0

LIMIT关键字可用于从查询中获取前 5(或 10 或其他)行,因此,如果我正确理解您的要求,您可以将INNER JOINon更改video_detailsINNER JOINon子查询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'
于 2013-03-28T15:28:25.187 回答