web-dev-qa-db-ja.com

テーブルへのsqliteの挿入select * from

Androidアプリで、あるテーブルから別のテーブルにデータを移動する必要があります

私は次の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)
27
Gyonder

INSERT句で列名を明示的に指定します。

INSERT INTO destinationTable (risposta, data_ins)
SELECT STATUS risposta, DATETIME('now') data_ins 
FROM   sourceTable
55
John Woo

挿入する列を指定できます。 _id列はautoincrementであり、他の2つの列を挿入しているので、次のようになります。

insert into MYTABLE2 (riposta, data_ins)
select STATUS risposta, DATETIME('now') data_ins from  MYTABLE 2
3
Aleks G

これは、あるテーブルから別のテーブルへのクエリに役立ち、選択した列(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();