使用一个更新的字段将 SQLite 行复制到相同的 table?

Duplicating SQLite Rows into same table with one updated field?

所以我有一个包含联系人的数据库。每个联系人都有一个文件夹字段,我在应用程序中显示时用于对它们进行分类,我的 ID 是来自服务器和文件夹类型的唯一 ID 的组合。我想做的是获取我 table 中的每个联系人,并使用更新后的文件夹值 "all".

复制它们 1 次

所以如果我只有 2 个联系人,那么在 INSERT

之前看起来像这样
---------------------------------------------------
id         |   name |   folder |   area |  number |
---------------------------------------------------
1abfav     |  John  |   fav    |   111  | 1234567 |
2cdarchive |  Susan |  archive |   111  | 6785678 |

插入后我会

---------------------------------------------------
id         |   name |   folder |   area |  number |
---------------------------------------------------
1abfav     |  John  |   fav    |   111  | 1234567 |
2cdarchive |  Susan |  archive |   111  | 6785678 |
1aball     |  John  |   all    |   111  | 1234567 |
2cdall     |  Susan |   all    |   111  | 6785678 |

INSERT INTO ... SELECT:

insert into contacts(id,name,folder,area,number)
select 
  substr(id, 1, length(id) - length(folder)) || 'all',
  name,
  'all',
  area,
  number
from contacts;

参见demo
结果:

| id         | name  | folder  | area | number  |
| ---------- | ----- | ------- | ---- | ------- |
| 1abfav     | John  | fav     | 111  | 1234567 |
| 2cdarchive | Susan | archive | 111  | 6785678 |
| 1aball     | John  | all     | 111  | 1234567 |
| 2cdall     | Susan | all     | 111  | 6785678 |