带有内部联接的 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 不知道在该列中放入什么内容。
因此,当您插入一行时,您必须为该列提供一个值。
如果不为其创建行或UPDATE
ing 现有行,就无法将值放入列中。
【讨论】:
谢谢@Gordon Linoff。你的回答做到了以上是关于带有内部联接的 SQL 插入试图插入错误的列的主要内容,如果未能解决你的问题,请参考以下文章
SQL语法错误:无法将 NULL值插入列'',该列不允许空值。INSERT失败。怎么解决啊