【发布时间】:2017-07-03 23:02:24
【问题描述】:
我正在使用一个表示树的 SQLite 表。其列包括id 和parent。当然,每个parent 值都是另一行的id。
还有一个 changeCount 列,对于在批量操作中删除的每个子项,我必须将其递增 1。
比如说
- ID 为 11、12 和 13 的行将在批量操作中被删除。
- id=11 和 id=12 的行都有相同的 parent=5。
- id=13 的行有 parent=8。
那么id=5的行的changeCount应该加2,id=8的行的changeCount应该加1。
似乎应该有一种方法可以在一个查询中执行此操作。也许是这样的:
UPDATE myTable
SET changeCount = changeCount
+ (SELECT COUNT(*) FROM myTable
WHERE id IN (11,12,13) AND parent = XXXX);
表达式 XXXX 应该是对“当前”行的引用;正在设置其 changeCount 的那个。有没有这样的表达方式?或者有没有更好的方法来解决这个问题?
【问题讨论】:
-
SQLite 是一个嵌入式数据库,旨在与“真正的”编程语言一起使用。为什么要避免多个 SQL 语句?
-
有趣的评论,@CL!老实说,我 98% 的经验是使用“真正的”编程语言。使用 SQLite,我一直是一个简单的 SELECT 和 UPDATE 类型的人,羡慕那些似乎可以用一条花哨的 SQL 语句表达相当复杂的需求的数据库专家。当我在这里遇到这个要求时,我认为这只是中级水平,所以我会试一试花哨的 SQL。可能是我低估了这个要求的难度?
标签: sqlite subquery in-subquery