2

我想做一个查询,它将列出由最未回答的问题(具有该标签)排序的标签,但是由于标签存储为空格分隔varchar并且据我所知 SQL Server(StackExchange 使用)没有有一个分割字符串的功能,我有点不确定如何继续。我写了这个:

SELECT DISTINCT Tags from Posts WHERE AnswerCount = 0;

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

结果

我环顾四周,但我发现的每个结果都创建了一个函数作为拆分标签的解决方案,但是您不能在 dataexchange 上创建函数,所以这是不可能的。还有另一种方法可以将所有标签放入一列吗?

4

1 回答 1

3

您可以使用以下方法通过低效连接来执行此操作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 有一个很好的内置机制来存储列表。它不是一个字符串。它被称为表。你应该使用它,如果你有选择的话。

于 2014-07-13T02:08:13.567 回答