mysql计算数组字段中的不同出现次数

时间:2013-12-19 18:03:03

标签: mysql arrays group-by distinct

我有一个文本列,其中包含用户使用的主题标签。每行包含不同数量的主题标签,由空格分隔,如下所示:

USERS |  HASHTAG COLUMN:
------------------------
user1 | hashtag1 hashtag2
user2 | hashtag2
user1 | hashtag1 hashtag2 hashtag3 hashtag4

我想获得最常用的主题标签,在这种情况下,我想要的输出应该是:

OCCURRENCES | TAG
----------------------
3           | hashtag2
2           | hashtag1
1           | hashtag3
1           | hashtag4

我没有IDEA如何获得它,任何帮助非常感谢。谢谢

1 个答案:

答案 0 :(得分:1)

假设您无法将数据库重新设计为1NF,那么您可以在bash中执行此操作:

echo "select hashtag from table" | \
mysql --user=foo --password=bar --host=hostname --database=dbname --skip-column-names | \
sed -e 's/ /\n/g' | \
sort | \
uniq -c | \
sort -rn

sed命令将每个#标签放在自己的行上。第一个sort命令将所有重复的主题标签放在一起,以便...... uniq命令可以计算每个重复标签的所有出现次数。第二个sort命令按计数以反向数字顺序排序输出。