计算重复列并更新计数器列

Posted

技术标签:

【中文标题】计算重复列并更新计数器列【英文标题】:Count duplicate columns and update the counter column 【发布时间】:2019-04-08 22:42:34 【问题描述】: 报告表列: 身份证 | ip地址 |计数 |类别

我有重复的 ipaddress 条目,我想计算每个 IP 的数量和 更新每个 IP 的计数列。

我可以像这样计算重复项

SELECT ipaddress, COUNT(*) FROM report GROUP BY ipaddress HAVING COUNT(*) > 1 ORDER BY COUNT(*) DESC 

输出

ipaddress 计数(*) 192.168.2.187 16 192.168.6.14 14 192.168.2.17 11 3192.168.3.6 9 192.168.2.77 8

我只需要用正确的计数更新每个 ip。

【问题讨论】:

【参考方案1】:

您可以在UPDATEJOIN,如下所示:

UPDATE report r
  JOIN (SELECT ipaddress, COUNT(*) cnt FROM report GROUP BY ipaddress) up
    ON up.ipaddress = r.ipaddress
   SET r.`count` = up.cnt

【讨论】:

以上是关于计算重复列并更新计数器列的主要内容,如果未能解决你的问题,请参考以下文章

将 3 列分组为 1 列并生成计数 SQL

如何从表中选择所有列并计数?

合并列并获取计数 SQL Server 2008

错误列计数不计算第 1 行的计数 [重复]

mysql 计数器 计算不重复

如何使用 Cypher neo4j 将三列连接为一列并获取其中唯一条目的计数?