【发布时间】:2015-06-24 20:22:59
【问题描述】:
所以我有一个表Movement,其中有一列名为IDNumber。我想要做的是计算该列中每个 ID 的 ID 在IDNumber 中出现的次数
我可以像这样为每个 ID 单独执行此操作:
SELECT COUNT(*)FROM movement WHERE IDNumber = 379;
SELECT COUNT(*)FROM movement WHERE IDNumber = 654;
SELECT COUNT(*)FROM movement WHERE IDNumber = 789;
SELECT COUNT(*)FROM movement WHERE IDNumber = 878;
但我想对IDNumber 中的ID 的所有 执行此操作,并且在一个查询中执行此操作,因为我正在处理的实际数据集要大得多。那么我该怎么做呢?
当我尝试这样做时,我创建了另一个表 IDNumbers,其中包含 ID 列,其中列出了 Movement 中存在的所有不同 ID,我这样做了:
INSERT INTO IDCount(`ID`,`Count`)
SELECT n.ID, m.COUNT(*)
FROM movement m
JOIN IDNumbers n
ON n.ID = m.IDNumber
我希望结果是这样的:
IDNumber COUNT
379 2
654 1
789 1
878 1
这是 SQL Fiddle。
但我知道那是完全错误的……我该怎么做?任何帮助将不胜感激,谢谢!!
【问题讨论】:
-
select idnumber, count(*) .... group by idnumber where idnumber in (379, 654,789,878)? -
@MarcB 谢谢!但我不能只列出所有的 ID 号......在我的实际数据集中,我有大约 9500 个。
-
好吧,您确实说过“在一个查询中”...这是完成该任务的“一个查询”...您将获得与不同 ID 号一样多的行,例如不是全部 9500,但你会得到多行。
-
@MarcB 我的意思是实际上有 9500 个不同的 ID。无论如何,我找到了一种更简单的方法,但是谢谢!
标签: mysql sql select count sql-insert