一尘不染

INSERT INTO…SELECT为所有MySQL列

mysql

我正在尝试从以下位置移出旧数据:

this_table >> this_table_archive

复制所有列。我已经尝试过了,但是没有用:

INSERT INTO this_table_archive (*) VALUES (SELECT * FROM this_table WHERE entry_date < '2011-01-01 00:00:00');

注意:这些表是相同的,并已id设置为主键。


阅读 569

收藏
2020-05-17

共1个答案

一尘不染

手册中描述了正确的语法。尝试这个:

INSERT INTO this_table_archive (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM this_table
WHERE entry_date < '2011-01-01 00:00:00';

如果id列是一个自动递增的列,并且您在两个表中都已经有一些数据,那么在某些情况下,您可能希望从列列表中省略该id并生成新的id,以避免插入原来的ID表。如果您的目标表为空,那么这将不是问题。

2020-05-17