2013-03-04 33 views
0

我想复制一个表的全部内容(bids_accepted),并通过将表中的所有行放入archive_bids_accepted表中将其归档。除了archive_bids_accepted表有1个额外的列(第一列)以使整个出价组为唯一ID(在前面的步骤中创建)之外,这些表格完全相同。MySQL - 将整个表的记录放入具有唯一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"; 

回答

0

我不会尝试手动插入值为id。只是让MySQL的使用AUTOINCREMENT为你做它:

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字段将自动填充。

+0

它给出了一个错误,指出列数不匹配。以下是我在archive_bids_accepted表中设置archive_id字段的方法。 auction_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, – bluedevil2k 2013-03-04 19:20:51

+0

如果列数不匹配,请尝试指定要选择的列。我相应地更新了我的答案。 – 2013-03-04 19:23:38

相关问题