[英]How to consolidate all rows that have the same date and participant id (MYSQL)
所以我試圖寫一個簡單的像腳本一樣的mysql遷移。
我的目標是選擇參與者ID和日期,如果它們=相同,則返回一個計數。
在此示例中,計數將返回4。
然后,我將計數並存儲在變量中以放入另一個表中。
基本上,我將數據從4行合並到新表中的1行中,該表將具有一個count字段。
我當前的數據。
ID PARTICIPANT_ID DATE
--- -------------- ---------------------
"1" "4" "2015-05-06 21:35:37"
"2" "4" "2015-05-06 21:35:37"
"3" "4" "2015-05-06 21:35:37"
"4" "4" "2015-05-06 21:35:37"
我的目標。
ID PARTICIPANT_ID DATE COUNT
---- -------------- --------------------- -----
"1" "4" "2015-05-06 21:35:37" "4"
我試圖寫這樣的查詢:
SELECT ID, PARTICIPANT_ID, DATE FROM mytable
我需要對查詢進行哪些更改以返回指定的結果集?
這是(幾種選擇中的)一種,它將返回指定的結果。
SELECT MIN(t.id) AS id
, t.participant_id
, t.date
, COUNT(*) AS `count`
FROM mytable t
GROUP BY t.participant_id, t.date
“技巧”是GROUP BY
子句。 這會將列出表達式的具有共同值的所有行“折疊”為單行。 COUNT(*)
聚合函數返回“折疊”到GROUP
的行數。 MIN(t.id)
聚合返回組中各行中id
列的MIN(t.id)
。
INSERT INTO TABLE2
select null, PARTICIPANT_ID, DATE, COUNT(*) from TABLE1
GROUP BY null, PARTICIPANT_ID, DATE
當表2中的ID字段為AUTOINCREMENT時,應將其設置為correkt。
提示:不要將列的名稱命名為“ date”或“ count”,因為這些名稱可能是關鍵字,以后您會遇到麻煩。
問題僅在於第一列id
但如果需要,您可以執行MIN(id)
或MAX(id)
。
SELECT participant_id, `date`, CONT(*)
FROM table1
GROUP BY participant_id, `date`
SELECT participant_id,date,count(*)
FROM yourtable
GROUP BY participant_id, date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.