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

mysql统计数组字段中不同的出现次数,mysql,arrays,group-by,distinct,Mysql,Arrays,Group By,Distinct,我有一个文本列,其中包含用户使用的hashtag。每行包含不同数量的hashtag,用空格分隔,如下所示: USERS | HASHTAG COLUMN: ------------------------ user1 | hashtag1 hashtag2 user2 | hashtag2 user1 | hashtag1 hashtag2 hashtag3 hashtag4 我想得到最常用的hashtag,在这种情况下,我想要的输出应该是: OCCURRENCES | TAG ------

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

USERS |  HASHTAG COLUMN:
------------------------
user1 | hashtag1 hashtag2
user2 | hashtag2
user1 | hashtag1 hashtag2 hashtag3 hashtag4
我想得到最常用的hashtag,在这种情况下,我想要的输出应该是:

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

我不知道如何得到它,非常感谢任何帮助。谢谢

假设您无法将数据库重新设计为位于
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命令将每个hashtag放在自己的行中。第一个
sort
命令将所有重复的hashtag放在一起,以便。。。
uniq
命令可以统计每个事件的所有发生次数。第二个
sort
命令按计数以相反的数字顺序对输出进行排序。

您将陷入一个痛苦的世界:要对当前设计执行您想要的操作,您必须为该字段编写一个解析器。您需要稍微重新设计数据库,以克服这个问题和其他未来的问题,因为您的表不是第一个正常形式。看这里:看看这个,这太可怕了。