gpt4 book ai didi

mysql select inner join with limit

转载 作者:可可西里 更新时间:2023-11-01 08:05:47 25 4
gpt4 key购买 nike

我有 2 个表格,类别和文章,我想为每个类别获取 5 篇文章,表格如下所示:

category: id, name
articles: id, title, body, category_id

所以我通常做的是 INNER JOIN,但我得到了所有行,我如何指定我只需要每个类别 5 行,我想它需要一个 SELECT 中的一个 SELECT ?

最佳答案

您可以使用排名查询 mysql 没有针对此类结果的窗口函数来获取每组 n 条记录,我不会建议 group_concat 解决方案,因为作为 articles 条款说可以有足够的数据,如果你增加这个限制,它也有对 max_allowed_packet 的依赖,很容易通过 1024 个字符的限制约束。也是

SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
FROM category c
JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
WHERE rownum <= 5

上面将在其类别组中对每篇文章进行排名,您可以看到 rownum 别名的结果,在外部查询中,只需将文章结果过滤为每个类别组 5 个

关于mysql select inner join with limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25592126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com