【发布时间】:2012-08-29 13:08:41
【问题描述】:
SELECT GROUP_CONCAT(DISTINCT tag) AS tags, filename, COUNT(tag) AS count
FROM dados
GROUP BY filename
ORDER BY filename
我有那个查询,它显示了每部电影的所有标签,没有重复标签。但现在我想在每个标签前面显示重复次数。像这样的东西: 电影 (20)、火车 (50) 等。 我该怎么做?
【问题讨论】:
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
内部查询为每个标签创建您想要的字符串。外部将它们放在文件名级别。
我假设您正在使用 MySQL,因为 group_concat。在 SQL 的其他方言中,concat 运算符的表达方式可能不同。
【讨论】: