SELECT GROUP_CONCAT(DISTINCT tag) AS tags, filename, COUNT(tag) AS count
FROM dados
GROUP BY filename
ORDER BY filename
我有那个查询,它显示了每部电影的所有标签,没有重复标签。但现在我想在每个标签前面显示重复次数。像这样的东西:电影(20),火车(50)等。我该怎么做?
为此,您需要一个子查询:
select filename, group_concat(tagstr separator ',') as tags,
count(*) as NumDistinctTags,
sum(cnt) as NumTags
from (select filename, tag,
concat(tag, ' (', count(*), ')') as tagstr,
count(*) as cnt
from dados d
group by filename, tag
) d
group by filename
order by filename
内部查询为每个标签创建您想要的字符串。外部将它们放在文件名级别。
由于 group_concat,我假设您正在使用 MySQL。在 SQL 的其他方言中,concat 运算符的表达方式可能不同。