簡體   English   中英

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

[英]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 ,因為我正在處理的實際數據集要大得多。 那我該怎么做呢?

當我嘗試執行此操作時,我創建了另一個具有列IDIDNumbers ,該表剛剛列出了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;

目標表將具有列countIDNumber

怎么樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM