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 に答える