我有一个数据库,其中有两个表 campaign_details 和 product_details 。
campaign_details
product_details
campaign_details 中的 pr_name 列引用 product_details中的 pr_name
由于 campaign_details 表格庞大,我决定制作一个名为 campaign_info 的小型表格,以提高数据访问速度。
campaign_info
此处 cmp_name 对应 campaign_details 中的 cmp_name 和 < em> pr_id 对应中关联的 pr_name 的 pr_id product_details
因此,现在我要从 campaign_details cmp_name 和 pr_name >并添加新列 cmp_info_id
我正在使用此查询将值添加到 cmp_info_id
Insert into nredb.campaign_details(cmp_info_id) (Select ci.cmp_info_id from nredb.campaign_info ci, nredb.campaign_details cd,nredb.product_details pd
where ci.cmp_name=cd.cmp_name and ci.pr_id in (select pd1.pr_id from nredb.product_details pd1,nredb.campaign_details cd1 where cd1.pr_name=pd1.pr_name));
但它会出现此错误 错误代码:1364。字段'pr_name'没有默认值
对查询可能出错的任何帮助?
答案 0 :(得分:1)
您尝试插入campaign_details
表格,但未在查询中指定pr_name
的值,因为嵌套的Select
未获取该值查询。
您有两种选择:
Select
查询,以便它还返回pr_name
; pr_name
表格上设置campaign_details
的默认值,以便在Insert
查询中未指定值时仍会填充某些内容。您可能根本没有尝试向表中添加新行,而是尝试修改现有行的cmp_info_id
字段。如果是这种情况,那么您不需要Insert
查询,而是需要Update
:
UPDATE nredb.campaign_details SET cmp_info_id=(SELECT ...) WHERE <condition to select row to update>