[英]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有一些问题:
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.