【问题标题】:Sqlite Increment column value based on previous row's valueSqlite 根据前一行的值增加列值
【发布时间】:2014-05-23 16:25:20
【问题描述】:

如何根据 Sqlite 中的前一列值增加列值?我需要为 1000 多行执行此操作。我在第一行有数据说 100。我需要将接下来的 1000 行增加 2。

Row#  ColName
1       100
2       102
3       104
4       106

我尝试过这样的事情: 更新表 SET ColName = (Select max(ColName) from Table ) + 2 但这会将 102 放在所有列中。

【问题讨论】:

  • 所有行中的 102 是我从您的描述中所期望的。在之前/之后显示一些示例行。
  • @CL 该帖子已通过示例进行了编辑。我需要在 SqliteStudio 中执行此操作。
  • 有像Row#这样的实际列吗?
  • @CL 不,这只是为了说明。我没有整数列来获取上一行数据。唯一的其他列是文本和 Guid。

标签: sqlite


【解决方案1】:

假设这张表有一个rowid column,可以统计一下前面有多少行:

UPDATE MyTable
SET ColName = (SELECT MAX(ColName)
               FROM MyTable
              ) +
              (SELECT COUNT(*)
               FROM MyTable AS Previous
               WHERE Previous.rowid < MyTable.rowid
              ) * 2
WHERE ColName IS NULL

【讨论】:

  • 这帮助很大。我对数据的排列方式有疑问,但我对这个查询进行了一些修改,以使其满足我的需要。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多