[英]SQL - Confusion with INSERT INTO…SELECT and COUNT(*)?
所以我有一個表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 都執行此IDNumber
,因為我正在處理的實際數據集要大得多。 那我該怎么做呢?
當我嘗試執行此操作時,我創建了另一個具有列ID
表IDNumbers
,該表剛剛列出了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 。
但是我知道那是完全錯誤的...我該怎么做? 任何幫助將不勝感激,謝謝!
嘗試使用MySQL按功能分組
SELECT COUNT(*), IdNumber FROM movement GROUP BY IdNumber;
您甚至可以通過在where子句中添加更多條件來使其更出色
SELECT COUNT(*), IdNumber FROM movement WHERE IDNumber < 1000 GROUP BY IdNumber;
要么
SELECT COUNT(*), IdNumber FROM movement WHERE IDNumber IN (1,2,3,4) 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(*)
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
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.