0
SELECT GROUP_CONCAT(DISTINCT tag) AS tags, filename, COUNT(tag) AS count
FROM dados
GROUP BY filename
ORDER BY filename 

我有那个查询,它显示了每部电影的所有标签,没有重复标签。但现在我想在每个标签前面显示重复次数。像这样的东西:电影(20),火车(50)等。我该怎么做?

4

1 回答 1

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 运算符的表达方式可能不同。

于 2012-08-29T13:16:14.780 回答