2013-05-30 17 views
20

Ich muss die Daten von einem Tisch zum anderen in meinem Android-App bewegenSQLite Einsatz in Tabelle select * from

Ich mag würde die folgende SQL verwenden:

insert into MYTABLE2 select id, STATUS risposta, DATETIME('now') data_ins from MYTABLE 2 

Leider gibt es in Tabelle MYTABLE2 gibt es eine _ID-Spalte AUTOINCREMENT. Was könnte ich tun?

Danke.

EDIT: das ist mein MYTABLE2 die, die Tabelle I mit Daten aus einer anderen Tabelle füllen möchte:

CREATE TABLE "ANSWERS" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , 
"ID_QUESTION" INTEGER,"DATE_INS" DATETIME DEFAULT 
(CURRENT_DATE) , "ANSWER" INTEGER) 

Antwort

39

explizit die Spaltennamen in der INSERT Klausel angeben,

INSERT INTO destinationTable (risposta, data_ins) 
SELECT STATUS risposta, DATETIME('now') data_ins 
FROM sourceTable 
+0

#JW 웃 Wenn ich dies tun, sagt es: MYTABLE2 hat x Spalten aber y-Werte geliefert wurden. Wobei y = x + 1. Es scheint, _id Primärschlüssel autoincrement benötigt wird sowie – Gyonder

+0

es wird eine Ausnahme generieren. Die Anzahl der Werte muss mit der Anzahl der angegebenen Spalten übereinstimmen. –

+0

können Sie Beispieltabellenstruktur geben? –

3

Sie können angeben, in welche Spalten Sie einfügen möchten. Unter der Annahme, dass die _id Spalte ist autoincrement und Sie sind die beiden anderen Spalten eingefügt haben, können Sie so etwas wie dieses:

insert into MYTABLE2 (riposta, data_ins) 
select STATUS risposta, DATETIME('now') data_ins from MYTABLE 2 
+0

#Aleks G Wenn ich dies tue, heißt es: MYTABLE2 hat x Spalten, aber y Werte wurden geliefert. Wo y = x + 1 – Gyonder

+0

@Gyonder Sind Sie sicher, dass Sie Ihre ID-Spalte aus der SELECT-Klausel entfernt haben? –

0

Dies könnte eine Abfrage von einem Tisch zum anderen und es wird auch prüfen, ob die ausgewählte helfen Spalte (id) existiert bereits in einer anderen Tabelle.

SQLite QUERY:

INSERT INTO MYTABLE2(id,data_ins) 
SELECT id, data_ins FROM MYTABLE2 
WHERE id NOT IN (SELECT id FROM MYTABLE1) 

Android:

String select_insert_query = "INSERT INTO " + TABLE_MYTABLE2 
      + "(" + ID + "," + DATA_INS + ") SELECT " 
      + ID + "," 
      + DATA_INS + " FROM " 
      + TABLE_MYTABLE2 
      + " WHERE " + ID + " NOT IN (SELECT " + ID 
      + " FROM " + TABLE_MYTABLE1 + ")"; 

    SQLiteDatabase db = this.getWritableDatabase(); 

    Cursor cursor = db.rawQuery(select_insert_query, null); 
    cursor.close(); 
Verwandte Themen