如何将一个表中的值插入到另一个表中?

Posted

技术标签:

【中文标题】如何将一个表中的值插入到另一个表中?【英文标题】:How to insert values from one table to another table? 【发布时间】:2019-02-07 17:26:31 【问题描述】:

我有包含作者姓名和 author_id(主键)的作者表。另一个名为 books 的表也有作者姓名和 author_id(外键)。我已经在书表中手动插入了作者姓名的值。 现在,我想使用以下查询在 book 表中的 author id 中插入值:

insert INTO tblbooks (Au_id) 
SELECT tblauthors.Au_id FROM tblauthors JOIN tblbooks ON 
tblbooks.a_name=tblauthors.AuthorName;

但我收到一个错误:

1062 - 键 'PRIMARY' 的重复条目 ''

【问题讨论】:

有根据的猜测您是否忘记在tblbooks 表中的列具有PRIMARY KEY 的位置添加AUTO_INCREMENT 选项? ..如果那没有帮助或不是这样。我建议您提供示例数据和预期结果见Why should I provide an MCVE for what seems to me to be a very simple SQL query? 在子表books 中复制列author_name 指出了糟糕的设计。请从该表中删除该列。您已经引用了authors 表。 感谢您的帮助....... :) 【参考方案1】:

由于books 表中已有数据,您需要更新作者ID 而不是插入。

UPDATE tblbooks b
        INNER JOIN
    tblauthors a ON b.a_name = a.AuthorName 
SET 
    b.Au_id = a.Au_id;

【讨论】:

你在这里做了一些相当大的假设。

以上是关于如何将一个表中的值插入到另一个表中?的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中将两个不同表中的值插入到另一个表中

如何使用'$row'将一个数据库表中的特定值插入到另一个数据库表中?

oracle - 如何将一个表中的唯一值多次插入到另一个表中?

如何将存储在引用表中的引用值插入到另一个表中?

MYSQL 如何把查询到的结果插入到另一个表中?

如何将一个表中的行合并到另一个表中的另一行