2009-09-24 6 views
1

J'ai une table SQL qui a une colonne ID et d'autres colonnes. La deuxième table a également une colonne ID. Maintenant, je veux insérer dans la deuxième table des lignes de la première table, mais seulement celles qui n'apparaissent pas déjà. Je veux que la deuxième table soit "une somme" des deux, mais sans doublons.Sélection de données à partir de deux tables

Le premier est labels et le second est tags. Les deux ont label colonne. Je veux insérer labels.label, "", "", "", "N", "N/A" en balises pour toutes les étiquettes figurant au tableau labels mais pas dans tags, parce que les étiquettes dans les balises sont déjà des données remplis.

J'ai essayé

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

mais je Je reçois beaucoup de doublons. La même chose s'applique pour

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

Peut-être que je n'ai pas une idée, parce que je suis assez nouveau dans SQL.

Comment puis-je y parvenir? J'utilise SQLite avec Python.

Cheers, Tom

Répondre

2

Vous pouvez commencer ici

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

L'insert en syntaxe suppose que la deuxième table (t2) existe déjà. Si vous souhaitez créer la nouvelle table, vous devez sélectionner col1, col2 ... dans NewTable.

EDIT: modifié "existe" en "in" b/c SQL Lite préfère "in".

+0

sqlite3.OperationalError: près de "EXISTS": erreur de syntaxe – uolot

+0

mais, oui, la deuxième table existe! – uolot

Questions connexes