我需要填写出现次数。表定义包含全部三列,原始数据包含 2 列。
ID | EventDate/Time | OccurrenceNumber
-----------------------------
1 | 1/11/2017 | 1
2 | 1/12/2017 | 1
3 | 1/15/2017 | 1
2 | 1/17/2017 | 2
4 | 1/18/2017 | 1
...
数据在读入 MySQL(.csv 数据文件)之前先按事件日期(唯一/时间戳)和 ID 进行预排序(原始),并且需要以一致的方式确定出现次数字段接着就,随即。 (第二次发生在时间上是第二次。)
最佳答案
如果每个 ID 的日期都是唯一的,那么您可以使用以下查询来获取出现次数。基于将 EventDate 与同一个表匹配
select a.*,
(
select count(*)
from demo b
where a.ID = b.ID
and b.EventDate < a.EventDate // edit updated criteria
) +1 OccurrenceNumber
from demo a
order by a.ID,a.EventDate desc
对于更新,假设 demo2 是要更新的目标表,那么您可以将更新查询编写为
update demo2 b1
join (
select a.*,
(
select count(*)
from demo b
where a.ID = b.ID
and b.EventDate < a.EventDate
) +1 OccurrenceNumber
from demo a
) a1 on (b1.ID = a1.ID and b1.EventDate = a1.EventDate)
set b1.OccurrenceNumber = a1.OccurrenceNumber
关于MySQL - 如何将重复 ID 的出现次数添加到行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452481/