2017-04-22 1 views
0

Existe-t-il une instruction INSERT TOP (...) dans SQLite? problème suivant:Comment insérer au sommet dans sqlite? LIMIT ne fonctionne pas

  1. Je crée une table avec 5 colonnes
  2. I INSERT 4 des 5 colonnes à partir d'une autre table
  3. Maintenant, je veux insérer la 5ème colonne d'une troisième table

Avec le code que j'ai écrit INSERT pour la colonne 5 ajoute de nouvelles lignes et les valeurs ne remplissent pas la colonne du haut.

co.execute('''CREATE TABLE newtable1 (column1 text, column2 int, column3 int, column4 text,column5 text)''') 
co.execute('''INSERT INTO newtable1 (column1, column2, column3, column4) SELECT column1a, column2a, column3a, column4a FROM db1''') 
c.commit() 


co.execute('''INSERT INTO newtable1 (column5) SELECT newColumn FROM db2''') 
c.commit() 

Je cherche quelque chose comme

co.execute('''INSERT INTO newtable1 (column5) SELECT TOP (9999) newColumn FROM db2''') 

J'ai essayé LIMIT, mais il crée à nouveau 9999 lignes supplémentaires.

co.execute('''INSERT INTO newtable1 (column5) SELECT newColumn FROM db2 LIMIT 9999''') 

Merci beaucoup pour votre aide!

Répondre

0

Vous devez utiliser UPDATE sur les lignes créées

MISE À JOUR nom_table SET colonne1 = valeur1, colonne2 = value2 ...., columnn = valeurN OU [condition];

ou INSERT dès le début

INSERT INTO newtable1 (column1 , column2, column3, column4, column5) SELECT column1a, column2a, column3a, column4a , newColumn FROM db1, db2 
+0

J'ai essayé ceci: MISE À JOUR newtable1 SET Column5 = (SELECT newColumn DE db2) OÙ Column5 IS NULL il ne remplit toutes les lignes, mais seulement avec la première entrée de newColumn. J'ai besoin de la première valeur de newColumn dans row1 et de la deuxième valeur de newColumn dans row2 ... –

+0

INSERT INTO newtable1 (colonne1, colonne2, colonne3, colonne4, colonne5) SELECT colonne1a, colonne2a, colonne3a, colonne4a, nouvelleColonne FROM db1, db2 –