使用 INSERT INTO...SELECT 将所有列插入目标表
使用以下命令将数据从 this_table 复制到 this_table_archive 时遇到困难使用通配符 (*) 选择的 INSERT INTO 语句。让我们排查问题并找到可行的解决方案。
错误在于使用 (*) 来选择所有列而不指定列名。正如 MySQL 手册中详述的,正确的语法要求您显式列出列名称。
以下是正确的代码:
INSERT INTO this_table_archive (col1, col2, ..., coln) SELECT col1, col2, ..., coln FROM this_table WHERE entry_date < '2011-01-01 00:00:00';
替换 col1, col2, ..., coln与表中实际的列名。
关于 id 列,如果两个表都有自增 id 并且数据已存在于其中表,您可以考虑在查询的列列表中省略 id 以避免潜在的重复键冲突。
对于空目标表,此省略不会导致任何问题。但是,对于包含数据的表,排除 id 列将确保为复制的行生成新的、唯一的 ID。
以上是如何在 MySQL 中使用 INSERT INTO...SELECT 正确地将所有列从一个表插入到另一个表?的详细内容。更多信息请关注PHP中文网其他相关文章!