Табличные записи заменяются при копировании из другой таблицы в sqlite - PullRequest
0 голосов
/ 06 марта 2019

У меня есть две таблицы sqlite

tab1 (items (text), Id (Целочисленный первичный ключ))

tab2 (элементы (текст), Id (первичный ключ целого числа))

В tab1 уже есть несколько записей. Я хочу скопировать все записи из tab2, которых нет в tab1.

когда я использую следующий запрос:

"вставить в tab1 выбрать * из tab2, где элементы не находятся (выбрать элементы из tab1)".

Он заменяет все элементы в tab1 тем же самым PK из tab2.

Я хочу, чтобы новые элементы из tab2 были добавлены в tab1 с новым PK

Спасибо

1 Ответ

0 голосов
/ 06 марта 2019

Вам нужно указать, что вы хотите, чтобы в tab1 был вставлен только столбец items.
Другой столбец id, так как это INTEGER PRIMARY KEY, это также AUTOINCREMENT, поэтому никаких специальных действий для него не требуется.

INSERT INTO tab1 (items)
SELECT items
FROM tab2 
WHERE items NOT IN (SELECT items FROM tab1) 

или NOT EXISTS:

INSERT INTO tab1 (items)
SELECT items
FROM tab2 t2
WHERE NOT EXISTS (
  SELECT 1 FROM tab1 WHERE items = t2.items
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...