首页 > 解决方案 > MySQL 中的事件分组

问题描述

使用如下所示的表格:

id  name    DATE
1   a   2020-01-01
2   a   2020-01-02
3   b   2020-01-03
4   b   2020-01-04
5   a   2020-01-05
6   b   2020-01-06

我想将一对a与下一个(按时间排序)分组,b这样我就可以找到他们日期的差异。理想情况下,这看起来像:

id_a    id_b    difference
1       3       2
2       4       2
5       6       1

这似乎很棘手(sqlfiddle),inner join因为使用类似的东西选择同一个表

SELECT *
FROM test
INNER JOIN test AS t2 ON test.name = "a"
AND t2.name = "b"
AND test.date < t2.date;

最终匹配超过 1ab,并且过滤这似乎很困难,因为1需要匹配324所以像最小差异这样的简单规则不起作用。MySQL(8.0)甚至可以实现这样的事情吗?

标签: mysqlsql

解决方案


推荐阅读