在SQLite中将列数据从一个表复制到另一个表

时间:2011-02-17 13:13:17

标签: sql sqlite sql-update

我有一个表格,我需要有一个递增的_id列。但是由于表有3个主键,我无法使用自动增量。这是在SQLite,顺便说一句。该表已经填充了数据,因此我不能只重新创建表。

有没有办法在_id列中插入1到148之间的值?

我们已经尝试过这样的事情:

UPDATE table1
SET _id = (SELECT _id FROM table2)

table2是一个临时表,其中包含从1到148的值。但是,这只会将所有_id值更新为“1”..

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:3)

我不明白。但是,让我试试。

  • table1有一个主键 三列。
  • 其中一列名为“_id”。
  • 列“_id”是一个整数,但是 不是自动递增的 整数。
  • 您想插入值1到148 到table1._id。

在SQLite中,如果主键中的其他两列中的任何一列被定义为“NOT NULL”,那么您就无法这样做。您必须同时为主键的所有“NOT NULL”组件插入值。但如果它们可以为空,则可以将值插入table1._id。刚

insert into table1 (_id)
select _id from table2;

这将向table1中插入新行,除了_id之外的所有列都包含空值。