sql - 拆分数据浏览器帖子中的标签

标签 sql sql-server dataexplorer

我想要进行一个查询,该查询将列出按最未回答的问题(具有该标签)排序的标签,但是,因为标签存储为空格分隔的 varchar 并且据我了解SQL Server(which StackExchange uses)没有分割字符串的函数,我有点不确定如何继续。我写的是:

SELECT DISTINCT Tags from Posts WHERE AnswerCount = 0;

它正确返回标签,但它们都是按帖子分组的:

Results

我环顾四周,但是 every result我发现可以创建一个函数作为分割标签的解决方案,但是您无法在数据交换上创建函数,因此这是不可能的。还有另一种方法可以将所有标签放入一列中吗?

最佳答案

您可以使用 like 通过低效联接来实现此目的:

select t.TagName, count(p.Tags)
from Tags t left join
     Posts p
     on p.Tags like '%' + t.TagName + '%'
where p.AnswerCount = 0
group by t.TagName;

您确实应该使用一个单独的联结表,PostTags,每个帖子一行和该帖子上的每个标签。这种类型的查询会简单得多。 SQL 有一个很好的内置机制来存储列表。它不是一个字符串。它被称为 table 。如果有选择的话,您应该使用它。

关于sql - 拆分数据浏览器帖子中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24718828/

相关文章:

mysql 外键错误 150

sql - 将现有列转换为标识

stackexchange - 如何根据信誉阈值获取用户列表?

sql - 如何替换字符串中的奇怪模式?

stackexchange-api - 用于链接访问的 SE Data Explorer 表

mysql - 显示一个表中的所有数据,而不考虑第二个表中的信息

mysql - 不知道如何合并两个MySQL表

mysql - 如何传递一个数组并选择该数组中不在表内的元素

sql - 有效检查记录集中是否存在多行

sql-server - 主键升序与降序