【问题标题】:Making an Update Query to Count Occurrences进行更新查询以计算发生次数
【发布时间】:2013-05-28 21:46:11
【问题描述】:

我有一个关于 UPDATE 查询的 SQL 的简单问题。我在这里发现了一些非常接近我想知道的东西: MySQL: Count occurrences of distinct values

但是.. 这不是更新查询。这是我想要做的示例:

在一个表中(我们称表为“数据”),我想进行 UPDATE 查询。表格如下所示:

Id color  count
1  blue   0
2  blue   0
3  red    0
4  red    0
5  blue   0
6 white   0

现在,[id] 是此示例的自动增量键,[color] 是 TEXT 字段。 [count] 是一个数字

我想要的是更新计数,以便它告诉 [color] 发生了多少实例。 UPDATE 查询运行后,表如下所示:

Id  color count
1   blue  3
2   blue  3
3   red   2
4   red   2
5   blue  3
6   white 1

看起来很简单,但我搞砸了 DCOUNT 和 COUNT 命令,而且我可能遗漏了一些非常简单的东西,但仍然......没有乐趣。我看到的所有帮助都只处理 SELECT 查询,但我肯定需要这个查询来更新 [count] 字段。

提前致谢!

【问题讨论】:

  • 我认为您的销售不会将其存储在您的表中。
  • 我不明白你在这里想说什么..
  • 我不认为应该将表中某些事物的出现次数存储在表中,您应该在运行时计算它,而不是尝试存储它(而且它会非常昂贵在每次更新/插入/删除时更新)。
  • 啊,我完全明白了。 Normall 我会同意你的观点,我明白你为什么这是多余的——事实上,确实如此。但是,我需要完成计数的原因很长且令人费解,但它是此表中数据的必填字段。这个 UPDATE 只会做一次,所以如果我必须这样做,它会怎么做?它基本上是 EXCEL 中的 COUNTIF 语句,我理解他们为什么在 Access 中没有它,但不幸的是,我仍然需要为这个特定的数据库解决这个问题。呵呵

标签: count find-occurrences


【解决方案1】:

你应该试试:

UPDATE data JOIN
( 
  SELECT color, count(1) AS color_cnt
  FROM data
  GROUP BY color
) AS sub ON data.color = sub.color
SET cnt = sub.color_cnt

【讨论】:

  • 哪个版本的 MySQL ?我在 MySQL 5.5.28 上发布之前测试了我的查询
  • 抱歉,我使用的是 Access 2007。
  • @MikelSealey Outch ...)o:
猜你喜欢
  • 2016-12-05
  • 1970-01-01
  • 2020-01-02
  • 2012-02-07
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多