mysql - 忽略mysql select中的后续等效行
问题描述
我需要删除历史日志数据中的冗余。所以给出下表:
--------------------------------------
| entity_id | action | date |
--------------------------------------
| 1 | 'A' | 2018-01-01 |
|x 1 | 'A' | 2018-01-01 |
| 1 | 'B' | 2018-01-01 |
| 1 | 'A' | 2018-01-02 |
| 8 | 'A' | 2018-01-02 |
|x 1 | 'A' | 2018-01-03 |
|x 8 | 'A' | 2018-01-04 |
|x 1 | 'A' | 2018-01-05 |
| 1 | 'B' | 2018-01-05 |
--------------------------------------
我想删除带有(x)的那些。简而言之,我想忽略实体随后采取的任何具有相同操作的行。因此,我想要一个返回以下结果的查询
--------------------------------------
| entity_id | action | date |
--------------------------------------
| 1 | 'A' | 2018-01-01 |
| 1 | 'B' | 2018-01-01 |
| 1 | 'A' | 2018-01-02 |
| 8 | 'A' | 2018-01-02 |
| 1 | 'B' | 2018-01-05 |
--------------------------------------
以编程方式,删除这些冗余很容易,但是对于纯 SQL,我有点迷茫。对 SQL 查询足够了解的人将如何处理这个问题?
谢谢
编辑:基本上,对于实体 1,日志中的连续操作是A->A->B->A->A->A->B
,我想要一个返回具有这些操作的行的选择A->B->A->B
解决方案
这将是如果按日期顺序添加行。
select entity_id, action, min(date)
from table
group by entity id, action
推荐阅读
- r - 为什么当将列表传递给 measure.vars 时,melt 会产生警告?
- forms - Symfony 渲染一个集合表单类型原型
- javascript - 在 Next.js 中获取表单提交数据的最佳方法是什么?
- javascript - React Native 中的 BackHandler 无法正常工作
- laravel - Laravel - 用户验证 ID 给出错误响应
- swiftui - 在点击按钮时更改视图的 ViewModel 会导致:“AttributeGraph:通过属性警告检测到循环”
- sql-server - SQL Server:使用 ROW_NUMBER 函数进行分页时出现转换错误
- azure - 无法使用 Microsoft Teams 消息扩展下载文件
- r - 运行应用程序没有结果 R 闪亮的应用程序和崩溃 RStudio
- javascript - 我的路线使用 axios 返回 404 错误