0

我有一个数据库,其中有一列我想查询它在一段时间内更改的次数。例如,我有用户名、用户级别和日期。如何查询此数据库以查看用户级别在 x 年内更改的次数?

(我查看了有关 stackoverflow 的其他帖子,他们告诉我使用触发器。但在我的情况下,我想查询数据库以了解已进行的更改数量。如果我的问题无法回答,请告诉我我可能需要查看哪些其他列来解决这个问题。我应该为此使用 Lag 吗?)

4

3 回答 3

2

数据库本身不会为您捕获此信息。两个建议是将您的数据存储为时间序列,而不是更新值,而是将新行添加到表中作为新的当前值并使旧值过期。另一种选择是添加一个新列来跟踪您关心的列的更新次数。这可以在代码或触发器中完成。

于 2012-07-12T05:54:03.853 回答
1

你听说过LOG这个词吗?您必须创建一个新表,在其中存储您想要的更改。我可以想象这个表的解决方案:

  • id - int,主键,自增
  • table - 更改信息的表名
  • table_id - 已进行更改的表中的信息唯一 ID
  • 年 - 整数
  • 月 - 整数
  • 日 - 整数

知道这一点,你可以计算一切

于 2012-07-12T05:56:36.813 回答
0

如果您已经通过添加新行来跟踪关卡历史记录,level并且date每次用户更改时都不同level

SELECT username, COUNT(date) - 1 AS changes
FROM table_name
WHERE date >= '2011-01-01'
GROUP BY username

这将为您提供自 2011 年 1 月 1 日以来的更改次数。请注意,我1COUNT. 那是因为在您的表中有一行的用户从未更改过级别,该行代表用户的初始级别。

于 2012-07-12T06:08:36.313 回答