繁体   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