2013-05-30 61 views
20

我需要將數據從一個表移動到另一個在我的Android應用sqlite的插入到表SELECT * FROM

我想用下面的SQL:

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

不幸的是在表MYTABLE2有一個_ID列AUTOINCREMENT。 我能做什麼?

謝謝。

編輯: 這是我MYTABLE2的,我想從另一個表中的數據來填充表:

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

回答

39

INSERT子句中明確指定的列名,

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

#JW웃如果我這樣做,它說:MYTABLE2滿足x列,但都提供y值。其中y = x + 1。它似乎也需要_id主鍵自動增量 – Gyonder

+0

它會產生一個異常。值的數量必須與指定的列數匹配。 –

+0

你可以給樣品表結構嗎? –

3

您可以指定要插入的列。假設_idautoincrement和你插入另外兩列,你可以有這樣的事情:

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

#阿萊克斯G如果我這樣做,它說:MYTABLE2有x列,但提供了y值。其中y = x + 1 – Gyonder

+0

@Gyonder你確定你從select子句中刪除了你的'id'列嗎? –

0

這可能有助於從一個表到另一個查詢,它也將檢查所選列(id)已經存在於另一個表中。

SQLite的查詢:

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

安卓

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();