SQL为博客文章选择标签

本文关键字:选择 标签 文章 SQL | 更新日期: 2023-09-27 18:10:45

我正在创建一个博客,并希望为我所有的文章显示标签。每个帖子可以有很多标签。因此,我将标签信息存储在名为tblTag的表中,并将我的博客文章存储在tblPost中。

目前,显示所有的帖子和每个帖子的所有标签。我使用下面的方法:

Select * from tblPost // this to select all post

并在每篇博客文章中执行while循环:

Select * from tblTag where BlogPostID= ... // this to select tag per post

这项工作。但是表现很差。我不希望服务器运行大量查询。怎样做才更好呢?

SQL为博客文章选择标签

可以,您可以使用CROSS APPLY

SELECT p.*, LEFT(ISNULL(t.n,''), LEN(t.n) - 1)
FROM tblPost p
    CROSS APPLY (SELECT it.TagName + ',' FROM tblTag it WHERE it.BlogPostId = p.BlogPostId FOR XML PATH('')) t(n)
WHERE p.BlogPostID = ...

这将给你所有的标签,用逗号分隔,在一个单独的列。

您可以使用SQL查询来获取帖子信息(标题、日期等),以及与此帖子相关的所有标记行。

SELECT p.*, t.* FROM tblPost p
left join tblTag t on t.BlogPostID = p.id

一旦您得到了上面的内容,您就可以循环遍历数据集中的行。