2009-09-24 170 views
1

我有一個SQL表,它有一個ID列和其他一些列。第二個表也有ID列。現在我想從第一個表格插入第二個表格行,但只有那些沒有出現在表格中的行。我希望第二張表是兩者的「總和」,但沒有重複。第一個是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新手。

我該如何做到這一點?我正在Python中使用SQLite。

乾杯, 湯姆

回答

2

你可以從這裏開始

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

插入到語法假設第二個表(T2)已經存在。如果你想創建新表格,你可以選擇col1,col2 ...到NewT​​able中。

編輯:將「存在」更改爲「在」b/c SQL Lite更喜歡「in」。

+0

sqlite3.OperationalError:在「EXISTS」附近:語法錯誤 – uolot 2009-09-24 13:58:26

+0

但是,是的,第二個表確實存在! – uolot 2009-09-24 14:01:21