带有内部联接的 SQL 插入试图插入错误的列

Posted

技术标签:

【中文标题】带有内部联接的 SQL 插入试图插入错误的列【英文标题】:SQL Insert with Inner Join trying to insert into wrong column 【发布时间】:2020-06-15 17:00:17 【问题描述】:

我有一个现有的产品表,我正在尝试将其他表中的新属性插入到我的主产品表中。

这是我的查询:

INSERT INTO company_attributes (amp)
    SELECT company_attr_amperage.amp
        FROM company_attr_amperage
        INNER JOIN company_attributes
        ON company_attr_amperage.product_id = company_attributes.product_id;

我得到的错误是:字段“product_id”没有默认值。

我不是要插入 product_id 列,而是要插入 amp 列(在查询的第 1 行中指定)

company_attributes 表中存在 amp 列,但现在每个值都是 NULL

谢谢

【问题讨论】:

请提供样本数据和期望的结果。 您是要INSERT 新记录还是UPDATE 现有记录? 【参考方案1】:

您可能只想更新现有行中的值。如果是这样:

UPDATE company_attributes ca JOIN
       company_attr_amperage caa
       ON caa.product_id = ca.product_id
    SET ca.amp = caa.amp;

【讨论】:

【参考方案2】:

INSERT 的工作是将新行放入表中,在您的情况下为 company_attributes。这些新行必须有效。您的表定义表明该表中名为 product_id 的列没有默认值。因此,当您不提供 INSERT 操作时,mysql 不知道在该列中放入什么内容。

因此,当您插入一行时,您必须为该列提供一个值。

如果不为其创建行或UPDATEing 现有行,就无法将值放入列中。

【讨论】:

谢谢@Gordon Linoff。你的回答做到了

以上是关于带有内部联接的 SQL 插入试图插入错误的列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用内部联接创建触发器

插入带有外键的查询

如何使用消除重复的联接从另一个表中插入一个表[重复]

SQL语法错误:无法将 NULL值插入列'',该列不允许空值。INSERT失败。怎么解决啊

我试图通过加入 3 个表将值插入表中,但是我收到“ORA-00933:SQL 命令未正确结束”错误''

我曾尝试使用带有条目小部件的 tkinter 将记录插入到 sql 表中,但出现 sql 语法错误