【问题标题】:Counting how many times each unique element appeared in the table计算每个唯一元素在表格中出现的次数
【发布时间】:2014-05-23 14:44:15
【问题描述】:

我有一个名为 key_uniqueWord 的 MySQL 表。这就是它的样子。

这就是创建表的方式..

CREATE TABLE `key_uniqueword` (
 `p_id` int(11) NOT NULL,
 `word` varchar(45) NOT NULL,
 `uniqueWordCount` int(11) NOT NULL,
 KEY `conv4` (`uniqueWordCount`,`p_id`,`word`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

我可以通过以下命令获取word 列中每个唯一单独记录的列表。

SELECT DISTINCT `word` from `key_uniqueword`

我可以使用以下命令检查word 列中的“特定”单个元素出现在key_uniqueword 表中的次数。例如,让我们检查单词“about”

SELECT COUNT(`word`) FROM `key_uniqueword` WHERE `word`="about"

就像这样,我需要知道word 列中的“每个”唯一元素在key_uniquword 表中出现了多少次。我希望输出类似于下表结构。它有 2 列,wordcount

word   |   count
_ _ _ _ _ _ _ _ _ 
about  |   99,450
a      |   1000
talk   |   7980
men    |   20,915

如何在 MySQL 查询中执行此操作? 重要 请注意,p_id 每行都不相同。

【问题讨论】:

  • p_id 对于所有行都相同吗?您的表没有 PRIMARY KEY。
  • @Strawberry:不,不是。
  • @Strawberry:是的,它没有主键。
  • uniqueWordCount列中存储了什么样的数据?如果您已经知道计数,您似乎不必计算计数。
  • @ntalbs:把它想象成一个随机数。

标签: mysql sql


【解决方案1】:
select word, count(*) as count
from key_uniqueword
group by word

【讨论】:

  • 嗨,不应该是count(word)而不是count(*)吗?
【解决方案2】:

正确的查询是:

SELECT COUNT(word) AS count FROM key_uniqueword group by word

【讨论】:

    【解决方案3】:
    select word, count(1)
    from key_uniqueword
    group by word;
    

    【讨论】:

      【解决方案4】:
      SELECT word, count(*) as occurance FROM key_uniqueword GROUP BY word;
      

      恕我直言,如果您有第三列存储字数,那么这将是一个非常薄弱的​​数据库设计,并会导致冗余/重复,我的观点是 count 在您的情况下是派生属性。您不应该为此浪费存储空间。

      在某些情况下,将派生属性保留在数据库中以加快查询速度会很好,但我认为您在这里不需要它。

      【讨论】:

      • 嗨,不应该是count(word)而不是count(*)吗?
      猜你喜欢
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多