Mysql SQL-与INSERT INTO…SELECT和COUNT(*)混淆?

Mysql SQL-与INSERT INTO…SELECT和COUNT(*)混淆?,mysql,sql,select,count,sql-insert,Mysql,Sql,Select,Count,Sql Insert,因此,我有一个表Movement,其中有一列名为IDNumber。我要做的是计算该列中每个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(*)

因此,我有一个表
Movement
,其中有一列名为
IDNumber
。我要做的是计算该列中每个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
,它只列出了
移动中存在的所有不同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 
这是它的


但我知道这是完全错误的。。。我该怎么做?任何帮助都将不胜感激,谢谢

尝试使用MySQL查看分组函数

SELECT COUNT(*), IdNumber FROM movement GROUP BY IdNumber;
您甚至可以通过使用where子句添加更多的条件来使其更美观

SELECT COUNT(*), IdNumber FROM movement WHERE  IDNumber < 1000 GROUP BY IdNumber;
要将结果保存到表格中,请执行以下操作:

INSERT INTO target_table SELECT COUNT(*), IdNumber FROM movement GROUP BY IdNumber;

目标表将包含列
count
,并且
IDNumber

尝试使用MySQL查看GROUPBY函数

SELECT COUNT(*), IdNumber FROM movement GROUP BY IdNumber;
您甚至可以通过使用where子句添加更多的条件来使其更美观

SELECT COUNT(*), IdNumber FROM movement WHERE  IDNumber < 1000 GROUP BY IdNumber;
要将结果保存到表格中,请执行以下操作:

INSERT INTO target_table SELECT COUNT(*), IdNumber FROM movement GROUP BY IdNumber;
目标表将包含列
count
,以及
IDNumber

如何:

SELECT IDNumber, Count(IDNumber) FROM movement
GROUP BY IDNumber
您没有说需要将其插入表中,对吗?

如何:

SELECT IDNumber, Count(IDNumber) FROM movement
GROUP BY IDNumber
    SELECT idnumber,COUNT(*) 
    FROM movement 
    group by IDNumber;

您没有说需要将其插入到表中,对吗?

以下是查询和插入:

    SELECT idnumber,COUNT(*) 
    FROM movement 
    group by IDNumber;
select
    n.id, count(*)
from
    movement m
    join IDNumbers n on m.IDNumber = n.id
group by 
    n.id
;

INSERT INTO IDCount(`ID`,`Count`)
    select
        n.id, count(*)
    from
        movement m
        join IDNumbers n on m.IDNumber = n.id
    group by 
        n.id
;

以下是查询和插入:

select
    n.id, count(*)
from
    movement m
    join IDNumbers n on m.IDNumber = n.id
group by 
    n.id
;

INSERT INTO IDCount(`ID`,`Count`)
    select
        n.id, count(*)
    from
        movement m
        join IDNumbers n on m.IDNumber = n.id
    group by 
        n.id
;

选择idnumber,count(*)。。。。按idnumber分组,其中idnumber位于(379654789878)
?@MarcB谢谢!但我不能列出所有的身份证号码。。。在我的实际数据集中,我有大约9500个。你说的是“在一个查询中”。。。这就是实现以下目标的“一个查询”。。。如果有不同的id号,您将返回尽可能多的行,例如,并非所有9500行,但您将返回多行。@MarcB我的意思是9500行不同的id。无论如何,我找到了一个更简单的方法,但是谢谢<代码>选择idnumber,count(*)。。。。按idnumber分组,其中idnumber位于(379654789878)
?@MarcB谢谢!但我不能列出所有的身份证号码。。。在我的实际数据集中,我有大约9500个。你说的是“在一个查询中”。。。这就是实现以下目标的“一个查询”。。。如果有不同的id号,您将返回尽可能多的行,例如,并非所有9500行,但您将返回多行。@MarcB我的意思是9500行不同的id。无论如何,我找到了一个更简单的方法,但是谢谢!谢谢但是我真的希望它被插入到一个表中对不起,因为我需要保存这些结果,然后将它们添加到另一个表中。插入到IDCount(ID,Count)按IDNumber从移动组中选择IDNumber,Count(IDNumber)…顺便说一句,不要命名列计数!!我将在另一篇评论中重申。不要指定字段计数!谈论令人困惑的代码!仅供将来参考。我不想听起来像个讲师对不起,我才意识到。别担心,这不是它在真实数据库中的实际名称:)谢谢!但是我真的希望它被插入到一个表中对不起,因为我需要保存这些结果,然后将它们添加到另一个表中。插入到IDCount(ID,Count)按IDNumber从移动组中选择IDNumber,Count(IDNumber)…顺便说一句,不要命名列计数!!我将在另一篇评论中重申。不要指定字段计数!谈论令人困惑的代码!仅供将来参考。我不想听起来像个讲师对不起,我才意识到。别担心,这不是它在真实数据库中的实际名称:)谢谢!我找到了一种更简单的方法,但是看看我尝试的方法是如何做到这一点是很有帮助的。简单总是更好的,这对你寻找、发现和认识更好的方法很有帮助!谢谢我找到了一种更简单的方法,但是看看我尝试的方法是如何做到这一点是很有帮助的。简单总是更好的,这对你寻找、发现和认识更好的方法很有帮助!谢谢你提供的额外信息!:)谢谢你提供的额外信息!:)