2009-09-24 3 views
1

У меня есть таблица SQL, в которой есть столбец идентификатора и некоторые другие столбцы. Вторая таблица также имеет столбец идентификатора. Теперь я хочу вставить во вторую таблицу строк из первой таблицы, но только те, которые уже не отображаются в ней. Я хочу, чтобы вторая таблица была «суммой» обоих, но без дубликатов.Выбор данных из двух таблиц

Первый - labels, а второй - tags. У обоих есть столбец label. Я хочу, чтобы вставить labels.label, "", "", "", "N", "N/A" в тег для всех меток, найденных в labels таблицы, но не в tags, так как метки в тегах уже некоторые данные заполнен.

Я попытался

INSERT INTO tags SELECT labels.label, "", "", "", "N", "N/A" FROM labels, tags 
WHERE labels.label != tags.label 

но я Получается много дубликатов. То же самое относится и к

INSERT INTO tags SELECT labels.label, "", "", "", "N", "N/A" FROM labels 
JOIN tags ON labels.label != tags.label 

Возможно, я просто не понимаю, потому что я совершенно новый в SQL.

Как я могу это достичь? Я использую SQLite с Python.

Приветствия, Том

ответ

2

Вы могли бы начать здесь

insert into t2 (col1, col2 ...) 
select colx, coly, ... from t1 
where t1.ID not in 
(select ID from t2) 
) 

Вставка в синтаксис предполагает, что вторая таблица (t2) уже существует. Если вы хотите создать новую таблицу, вы должны выбрать col1, col2 ... в NewTable.

EDIT: Изменено «существует» на «в» b/c SQL Lite предпочитает «in».

+0

sqlite3.OperationalError: рядом с "EXISTS": синтаксическая ошибка – uolot

+0

, но, да, вторая таблица существует! – uolot