繁体   English   中英

Mysql - 在一个查询中为每个id选择四行

[英]Mysql - Select four rows per id in one query

如果我有一个类别表,其特征行是默认值0,那么1/2/3/4/5/6将按照它们应显示的顺序显示六个类别。

我可以使用六个特色中每一个的类别ID从视频表中选择4个视频,并在一个查询中选择相应的categoryId,然后将结果与foreach分开吗?

然后返回它们并将foreach结果作为类别,然后将foreach类别作为videoList

SELECT id, title
FROM videos 
WHERE category = (SELECT id FROM category WHERE featured > 0) 
LIMIT 4

返回这样的东西:

foreach($result as $categoryVideos):
    echo $categoryVideos[categoryName];
    foreach($categoryVideos as $video):
        echo $video[title];
    endforeach;
endforeach;

我知道它需要加入等但是我这样做太复杂了吗? 我把我的空白归咎于睡眠不足,因为我通常会回答这样的问题。

它更复杂,因为我试图将所有这些数据从模型传递到控制器一次性作为$ result?

您的基本方法可行,但您的SQL有一些问题:

  • LIMIT 4不一定按照您期望的顺序返回记录。 使用ORDERBY告诉SQL您希望记录的顺序。如果我理解正确,类别排名在category表中。 如果是这种情况,则需要ORDERBY和子查询中的限制,例如SELECT id FROM category WHERE featured > 0 ORDERBY featured LIMIT 4
  • 您的子查询WHERE category = (SELECT...语法错误。替换= IN

你试图从6个类别中的每一个中获取4行,对吧? 总共24行?

这个问题的第一个答案可能适用于您的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM