问题
想象一下,有一张table装满了文章。每篇文章都有一个作者,并且可以有许多标签。
当获取这些文章时,应该有标签+作者。
这是通过在articles表上连接标签和作者来实现的。
SELECT *
FROM article
LEFT JOIN tag ON article.id = tag.article_id
但是现在我想实现分页。
我所尝试的
SELECT *
FROM article
LEFT JOIN tag ON article.id = tag.article_id
LIMIT 7
但是现在,如果我有一篇文章有6个标签,一篇有3个标签,那该怎么办?我得到的一篇文章有所有6个标签,但另一篇文章只有一个标签。
我读了一些博客文章,因为我被卡住了。
当我限制行时,我会丢失数据。
现在我读到做单独的请求。但首先,我只想做一个查询,更重要的是,我想过滤我的查询。例如:返回所有带有特定标签的文章,但使用分页。
SELECT *
FROM article
LEFT JOIN tag ON article.id = tag.article_id
WHERE tag.name = "TV Show"
LIMIT 7
1条答案
按热度按时间hzbexzde1#
由于您需要与文章相关的标签的完整信息,您需要分两步完成:
1.查询所需页面使用您的过滤器的文章列表.就像
1.从步骤1中选择项目的标签列表。类似于:
其中
:pN
是相应的文章id。或者,您可以在单个查询中执行此操作,并结合这两个步骤:
但恕我直言,这不是最好的选择,因为您需要在应用程序端聚合此数据集。