2

最も未回答の質問 (そのタグを持つ) によって順序付けられたタグを一覧表示するクエリを作成したいと考えていますが、タグはスペースで区切られて格納されているvarcharため、SQL Server ( StackExchange が使用する) ではありません。文字列を分割する機能がありますが、どうすればよいか少しわかりません。私はこれを書きました:

SELECT DISTINCT Tags from Posts WHERE AnswerCount = 0;

タグを正しく返しますが、それらはすべて投稿ごとにグループ化されています。

結果

私は多くのことを見てきましたが、私が見つけたすべての結果は、タグを分割するための解決策として関数を作成していますが、dataexchange で関数を作成できないため、それは不可能です。すべてのタグを 1 つの列に入れる別の方法はありますか?

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実際には、投稿ごと、およびその投稿のタグごとに 1 つの行を持つ個別のジャンクション テーブルを使用する必要があります。このタイプのクエリは、はるかに単純です。SQL には、リストを格納するための優れた組み込みメカニズムがあります。文字列ではありません。テーブルといいます。選択肢がある場合は、それを使用する必要があります。

于 2014-07-13T02:08:13.567 に答える