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
这项工作。但是表现很差。我不希望服务器运行大量查询。怎样做才更好呢?
可以,您可以使用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
一旦您得到了上面的内容,您就可以循环遍历数据集中的行。