【问题标题】:Sorting words by its occurence in a database, matching similar words根据在数据库中出现的单词对单词进行排序,匹配相似的单词
【发布时间】:2015-06-25 07:59:45
【问题描述】:

我有一个 mysql 表,上面有很多字。

  • 喂。
  • 我是吗
  • 这个
  • 那些

在上面的示例中,“hi”出现了 3 次,我想创建一个查询来查看该表并整理出出现次数最多的单词。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您需要使用GROUP BY 子句和COUNT 函数。

    SELECT word, COUNT(*) count FROM your_table GROUP BY word ORDER BY count DESC LIMIT 0,3;
    

    可能的输出:

    +------+-------+
    | word | count |
    +------+-------+
    | hai  | 2     |
    | Hai. | 1     |
    | This | 1     |
    +------+-------+
    

    如果您希望 MySQL 将 haiHai. 视为同一个单词,您应该在分组之前去除所有非字母字符。见MySQL: how to remove all non-alpha numeric characters from a string?。然后,根据this answer 的方法,它看起来像这样:

    SELECT LOWER(alphanum(word)) word, COUNT(*) count FROM your_table 
    GROUP BY LOWER(alphanum(word)) ORDER BY count DESC LIMIT 0,3;
    

    以及可能的结果:

    +------+-------+
    | word | count |
    +------+-------+
    | hai  | 3     |
    | this | 1     |
    | joe  | 1     |
    +------+-------+
    

    【讨论】:

    • 如果我想包含看起来相似的词意味着怎么办?
    • 在上面的输出中基本上hai和hai是相似的,如果我想数hai和hai是一样的怎么办?。
    【解决方案2】:

    您需要使用group by 方法编写一个sql 语句,将类似的东西组合在一起。这样的事情应该让你开始

    select word, count(word) 
    from table 
    group by word 
    order by count(word) desc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多