Дублирование строк SQLite в одну таблицу с одним обновленным полем?
Итак, у меня есть БД, содержащая контакты. У каждого контакта есть поле папки, которое я использую для их категоризации при отображении в приложении, мой идентификатор представляет собой комбинацию уникального идентификатора сервера и типа папки. Я хотел бы взять каждый контакт в моей таблице и продублировать их 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 |
1 ответ
Решение
С участием 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;
Смотрите демо.
Полученные результаты:
| 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 |