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