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.
感谢任何帮助!!
您必须规范化您的数据.意思是,单个列中不应该有多个值 - 没有分隔符.要规范化数据,您需要创建一个表来保存标记:
然后,您需要一个将BLOG记录链接到特定标记的表:
有趣的部分是使用管道分隔符从现有格式中提取数据,以便正确存储它.
然后,您将能够使用以下方法获得所需的输出:
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)
| 归档时间: |
|
| 查看次数: |
1419 次 |
| 最近记录: |