簡體   English   中英

如何合並具有相同日期和參與者ID(MYSQL)的所有行

[英]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.

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