错误代码:1364字段在MySQL中没有默认值

时间:2014-11-12 08:51:22

标签: mysql database

我有一个数据库,其中有两个表 campaign_details product_details

campaign_details

campaign_details_columns

product_details

product_details_columns

campaign_details 中的 pr_name 列引用 product_details中的 pr_name

由于 campaign_details 表格庞大,我决定制作一个名为 campaign_info 的小型表格,以提高数据访问速度。

campaign_info

campaign_info_columns

此处 cmp_name 对应 campaign_details 中的 cmp_name < em> pr_id 对应中关联的 pr_name pr_id product_details

因此,现在我要从 campaign_details cmp_name pr_name >并添加新列 cmp_info_id

new_campaign_details_columns

我正在使用此查询将值添加到 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'没有默认值

对查询可能出错的任何帮助?

1 个答案:

答案 0 :(得分:1)

您尝试插入campaign_details表格,但未在查询中指定pr_name的值,因为嵌套的Select未获取该值查询。

您有两种选择:

  1. 修改您的Select查询,以便它还返回pr_name;
  2. pr_name表格上设置campaign_details的默认值,以便在Insert查询中未指定值时仍会填充某些内容。
  3. 您可能根本没有尝试向表中添加新行,而是尝试修改现有行的cmp_info_id字段。如果是这种情况,那么您不需要Insert查询,而是需要Update

    UPDATE nredb.campaign_details SET cmp_info_id=(SELECT ...) WHERE <condition to select row to update>