2009-09-24 142 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