使用SQLite将数据插入表格并选择所有内容。

53

我需要在我的Android应用程序中将数据从一个表移动到另一个表。

我想使用以下SQL:

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

很不幸,MYTABLE2表中存在一个_ID列是自动递增的。我该怎么办?

谢谢。

编辑:这是我的MYTABLE2表,我想从另一个表中填充数据:

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

92

INSERT子句中明确指定列名,

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

1
如果我这样做,它会显示:MYTABLE2有x列,但提供了y个值。其中y = x + 1。似乎还需要_id主键自动递增。 - Gyonder
它会生成一个异常。值的数量必须与指定的列数匹配。 - John Woo
1
你可以传递 NULL,这是一个简化的例子,INSERT INTO destTable(DestinationID, OtherID, ColA) SELECT NULL, OtherID, COlA, FROM SourceTable - John Woo

6
这可能会有所帮助,从一个表查询到另一个表,并且还会检查所选列(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();

5

您可以指定要插入的列。假设_id列是自增的,而您要插入其他两列,则可以使用以下代码:

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

#Aleks G 如果我这样做,它会说:MYTABLE2有x列,但提供了y个值。其中y = x + 1 - Gyonder
@Gyonder 你确定已经从 select 子句中删除了 id 列吗? - Aleks G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接