gpt4 book ai didi

sql - PostgreSQL 查询以获取彼此之间微秒内发生的事件

转载 作者:行者123 更新时间:2023-11-29 13:30:58 25 4
gpt4 key购买 nike

Ruby on Rails 的 ActiveRecord 的 destroy_all 方法生成一个 SQL DELETE查询每条记录。我们在 Web 应用程序中有一个页面,允许用户删除相关记录。自 deleted_at时间戳相差几微秒,因此很难对同时删除的所有记录进行分组。以下是一些示例数据:

id | deleted_at<br/>
----+----------------------------
71 |
45 | 2014-04-29 18:35:00.676153
46 | 2014-04-29 18:35:00.685657
47 | 2014-04-30 21:11:00.73096
48 | 2014-04-30 21:11:00.738533
49 | 2014-04-30 21:11:00.745232
50 |
51 |
(8 rows)

所以您可以看到这里有两个事件,一个影响 2 行(ID 为 45 和 46),一个影响 3 行(ID 为 47、48 和 49)。我的问题是如何查询此表以便将每个事件分组到一行中?我考虑过使用 extract(microseconds from r.deleted_at)但如果秒数被包裹,那将失败。我想要一个查询,甚至是一个比较每条记录并将其与 deleted_at 分组的函数在彼此的某个阈值内。

编辑:我应该提到我不能使用 delete_all因为我想要运行回调。我们正在使用 paranoia gem 软删除记录。

最佳答案

我找到了解决方法。我可以简单地使用 update_all 手动设置时间戳,而不是依赖于 ActiveRecord 回调。因此,我执行 Model.where(...).update_all(deleted_at: Time.current) 而不是 Model.where(...).delete_all。现在我可以轻松地按时间戳分组。

如果有人想回答原来的Pos​​tgreSQL查询问题,我会很乐意选择正确的答案来加分。

关于sql - PostgreSQL 查询以获取彼此之间微秒内发生的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23474980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com