我正在使用代表树的SQLite表。其专栏包括id
和parent
。当然,每个parent
的值是另一行的id
。SQLite:需要参考UPDATE中的“当前”行
还有一个changeCount
列,对于在批量操作中删除的每个孩子,我必须递增1。
例如,说
- 行编号为11,12和13将要在一个批量操作将被删除。
- id = 11和id = 12的行都具有相同的父级= 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应该是对“当前”行的引用;那正在设置其变化数量。有没有一个表达?还是有更好的方法来解决这个问题?
SQLite是一个嵌入式数据库,旨在与“真实”编程语言一起使用。为什么要避免多个SQL语句? –
有趣的评论@CL!说实话,我的98%的经验是用'真正'的编程语言。对于SQLite,我一直都是一个简单的SELECT和UPDATE类型的人,羡慕那些似乎可以通过单一花哨的SQL语句表达相当复杂的需求的数据库专家。当我遇到这个需求时,我认为这只是中间级别的,所以我会给一些花哨的SQL一个镜头。也许我低估了这个要求的难度? –