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)…顺便说一句,不要命名列计数!!我将在另一篇评论中重申。不要指定字段计数!谈论令人困惑的代码!仅供将来参考。我不想听起来像个讲师对不起,我才意识到。别担心,这不是它在真实数据库中的实际名称:)谢谢!我找到了一种更简单的方法,但是看看我尝试的方法是如何做到这一点是很有帮助的。简单总是更好的,这对你寻找、发现和认识更好的方法很有帮助!谢谢我找到了一种更简单的方法,但是看看我尝试的方法是如何做到这一点是很有帮助的。简单总是更好的,这对你寻找、发现和认识更好的方法很有帮助!谢谢你提供的额外信息!:)谢谢你提供的额外信息!:)