MySQL - 将整个表的记录放入另一个具有唯一ID列的表中

时间:2013-03-04 18:47:40

标签: mysql sql

我想复制一个表的全部内容(bids_accepted)并将表中的所有行放入archive_bids_accepted表中进行存档。这些表完全相同,只是archive_bids_accepted表有一个额外的列(第一列),以便为整个出价组提供唯一ID(在之前的步骤中创建)。

这样做的MySQL语法是什么?我认为它很接近,但不能正确地得到语法。

// gets the unique ID
long id = DBUtil.executeInsert("INSERT INTO archive (create_username,create_ts,update_username,update_ts) VALUES('', NOW(),'',NOW())");

// MySQL syntax causing problems
String sql = "INSERT INTO archive_bids_accepted VALUES(" + id + ",select * from bids_accepted)";

// Also tried this
String sql = "INSERT INTO archive_bids_accepted " + id + ",select b.* from bids_accepted b";

1 个答案:

答案 0 :(得分:0)

我不会尝试手动插入id的值。让我们使用AUTOINCREMENT

让MySQL为您完成
CREATE TABLE archive
(
  Id int AUTOINCREMENT,
  create_username <datatype>,
  create_ts <datatype>,
  update_username <datatype>,
  update_ts <datatype>
)

然后执行以下SQL:

INSERT INTO archive_bids_accepted 
  (create_username, create_ts, update_username, update_ts)
SELECT create_username, create_ts, update_username, update_ts 
FROM bids_accepted

Id字段将自动填充。