Объединение таблиц в sqlite - PullRequest
0 голосов
/ 07 мая 2019

Предположим, у меня есть две таблицы, подобные этой:

table 1:
a    b    data
---  ---  ----
a1   b1   1
a1   b2   2
a2   b1   3
a2   b2   4

table 2:
a    b    data
---  ---  ----
a1   b1   5
a1   b2   6
a2   b1   7
a2   b2   8

Мне нужно объединить их следующим образом:

a    b    c    data
---  ---  ---  ----
a1   b1   1    1
a1   b2   1    2
a2   b1   1    3
a2   b2   1    4
a1   b1   2    5
a1   b2   2    6
a2   b1   2    7
a2   b2   2    8

Входные таблицы находятся в двух разных файлах, и янужно, чтобы выходная таблица была записана в новый файл.

Я нашел этот вопрос , но он не задает точно то же самое, и мне нужна новая таблица в новом файле,а не представление.

Не важно, что столбец c следует после a и b.

Я знаю, что столбец можно добавить с помощью

ALTER TABLE table_name ADD c TEXT;

но это заполняет новый столбец NULL.

1 Ответ

1 голос
/ 07 мая 2019

Вы хотите создать новую таблицу с содержимым двух других?

CREATE TABLE table3 AS
  SELECT a, b, 1 AS c, data FROM table1
  UNION ALL
  SELECT a, b, 2, data FROM table2;

- это один простой способ.При необходимости используйте ATTACH , чтобы все файлы базы данных были загружены в один сеанс, и используйте форму schemaname.tablename для указания имен таблиц.


Вы также можете разделить их на:части, если вы хотите добавить ограничения или что-то еще в новую таблицу:

CREATE TABLE table3(a TEXT, b TEXT, c INTEGER, data INTEGER);
INSERT INTO table3 SELECT a, b, 1, data FROM table1;
INSERT INTO table3 SELECT a, b, 2, data FROM table2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...