首页 >数据库 >mysql教程 >如何在 MySQL 中使用 INSERT INTO...SELECT 正确地将所有列从一个表插入到另一个表?

如何在 MySQL 中使用 INSERT INTO...SELECT 正确地将所有列从一个表插入到另一个表?

DDD
DDD原创
2024-12-07 19:57:13489浏览

How to Correctly Insert All Columns from One Table to Another in MySQL Using INSERT INTO...SELECT?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn