加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL Query:在一个非常庞大的表中计算重复值

发布时间:2021-03-19 07:01:37 所属栏目:MySql教程 来源:网络整理
导读:我有这个MySQL表: CREATE TABLE `triple` ( `id_one` int(11) NOT NULL,`id_two` int(11) NOT NULL,`id_three` int(11) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 它共有近1000万行.中间列中的ID(“id_two”)可以在不同

我有这个MySQL表:

CREATE TABLE `triple` (
  `id_one` int(11) NOT NULL,`id_two` int(11) NOT NULL,`id_three` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

它共有近1000万行.中间列中的ID(“id_two”)可以在不同的行中出现不同的时间.

简短示例:

id_one    id_two    id_three
1         2         3
2         2         3
3         2         1
68        98        1
1         4         3
2         4         4
4         5         33
6         5         3
90        5         3
34        5         83
9         3         98

现在我想计算不同的id(“id_two”),就是在这个例子中:

id_two     count
2     ->  3
98    ->  1
4     ->  2
5     ->  4
3     ->  1

如何有效地实现这一目标? (这是一次性工作……)这是第一件事.我需要做的第二件事是:要像上面一样计算,然后只选择那些有更多数量的ID,那么就说100.

非常感谢您的帮助!

亲切的问候
Aufwind 最佳答案 完成此任务的基本命令是这样的:

SELECT id_two,count(*) FROM triple GROUP BY id_two;

如果你想……你可以将它存储在临时表中

CREATE TEMPORARY TABLE xxx SELECT id_two,count(*) AS c FROM …
SELECT * FROM xxx WHERE c > 100;

…或在外部查询中使用结果…

SELECT * FROM (SELECT id_two,count(*) AS c FROM triple GROUP BY id_two) t WHERE c > 100;

…或使用HAVING条款(如Marc在评论中所建议的):

SELECT id_two,count(*) AS c FROM triple GROUP BY id_two HAVING c > 100;

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读