计算数据库中的标签

问题描述 投票:0回答:1

我在数据库字段中有一个标签列表。有些或大多数出现多次。 我想列出不同的标签名称,并将每个不同标签出现的次数放在括号中。到目前为止,这是我的代码。它显示不同的标签值,但仅显示每个标签值的计数为 1,即使大多数标签值出现多次。

<%
    SET LIST1 = CONN.EXECUTE("SELECT DISTINCT(TRIM(TAGS_)) AS TAGS_ FROM STORY_TAGS ORDER BY TAGS_ ASC")
    DO WHILE NOT LIST1.EOF
    V1 = TRIM(LIST1("TAGS_"))
    
    SET LIST2 = CONN.EXECUTE("SELECT COUNT(TAGS_) AS CNT1 FROM STORY_TAGS WHERE TAGS_ = '"&V1&"'")
    DO WHILE NOT LIST2.EOF
    vtag1 = list2("CNT1")
        
        
    %>

我不知道为什么这不起作用。可能很简单。

sql asp-classic
1个回答
0
投票

如果您使用的是 SQL Server 2016 或更高版本,那么您可以使用

string_split
:

create table #movies
(
    title varchar(100),
    tags varchar(100)
)

insert into #movies values
('A Haunting in Venice','crime,drama,horror'),
('Barbie','adventure,comedy,fantasy'),
('Elemental','animation,adventure,comedy'),
('Talk to Me','horror,thriller')

select value as tag, count(*) as moviesWithTag
from #movies
cross apply string_split(tags, ',')
group by value
order by count(*) desc, value

drop table #movies

结果:

标签 带有标签的电影
冒险 2
喜剧 2
恐怖 2
动画 1
犯罪 1
戏剧 1
幻想 1
惊悚片 1
© www.soinside.com 2019 - 2024. All rights reserved.