查询不同标签列表的最佳(简单而有效)方法?

Way*_* Ye 0 sql t-sql sql-server sql-server-2000

有一个很大的表 - 博客(假设记录大于1万),结构如下:

Blog_ID  Title  Tag
----------------------
1        AAA    T1|T2|T3
2        BBB    T2|T4
3        CCC    T3|T1|T2|T6|
Run Code Online (Sandbox Code Playgroud)

..................

博客标签与'|'分开,绝对可以重复,我想写一个查询来获取所有不同的标签以及标签外观,结果如下:

Tags   Appearance Count
------------------------
T1     14
T2     35
T3     88
T4     45
Run Code Online (Sandbox Code Playgroud)

............

那么最好(简单而有效)的方法是什么呢?再一次限制,SQL Server 2000功能是首选,因为我的Web应用程序主机提供程序使用的是SQL Server 2000.

感谢任何帮助!!

OMG*_*ies 6

您必须规范化您的数据.意思是,单个列中不应该有多个值 - 没有分隔符.要规范化数据,您需要创建一个表来保存标记:

TAGS

  • tag_id(主键)
  • 标签名称

然后,您需要一个将BLOG记录链接到特定标记的表:

BLOG_TAGS

  • blog_id(主键)
  • tag_id(主键)

有趣的部分是使用管道分隔符从现有格式中提取数据,以便正确存储它.

然后,您将能够使用以下方法获得所需的输出:

   SELECT t.tag_name, 
          COUNT(bt.blog_id) AS appearanceCount
     FROM TAGS t
LEFT JOIN BLOG_TAGS bt ON bt.tag_id = t.tag_id
Run Code Online (Sandbox Code Playgroud)