SELECT GROUP_CONCAT(DISTINCT tag) AS tags, filename, COUNT(tag) AS count
FROM dados
GROUP BY filename
ORDER BY filename
我有那个查询,它显示每部电影的所有标签,没有重复标签。但现在我想在每个标签前面显示重复次数。像这样的东西: 电影(20),火车(50)等 我怎么能这样做?
答案 0 :(得分:1)
你需要一个子查询:
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运算符的表达方式可能不同。