所以我有一个表 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(IDNumber) FROM movement
GROUP BY IDNumber
您没有说要求将其插入到表中,对吧?
关于mysql - SQL - 与 INSERT INTO...SELECT 和 COUNT(*) 混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31036262/