MySQL INSERT INTO语句给出错误代码1062

MySQL INSERT INTO语句给出错误代码1062,mysql,mysql-workbench,Mysql,Mysql Workbench,我有一个F1数据库,我试图将团队负责人的名字从Principals表插入到Teams表中,但由于某些原因,它无法工作。我不确定我的insert into语句是否错误,但我不明白为什么会是错误的。代码如下 这是insert语句。主体表中已经填充了主体名称及其对应的团队 INSERT INTO Teams (Principal) SELECT Principal_Name FROM Principals WHERE Team IN( SELECT Team_Name FROM

我有一个F1数据库,我试图将团队负责人的名字从Principals表插入到Teams表中,但由于某些原因,它无法工作。我不确定我的insert into语句是否错误,但我不明白为什么会是错误的。代码如下

这是insert语句。主体表中已经填充了主体名称及其对应的团队

INSERT INTO Teams (Principal) 
SELECT Principal_Name 
FROM Principals 
WHERE Team IN(
    SELECT Team_Name 
    FROM Teams);

insert语句尝试为具有“NOTNULL”属性的列分配null值。检查这些列“NOTNULL”->false,或在insert语句中指定默认值或定义值。我希望这对你的INSERT语句有所帮助

INSERT INTO Teams (Principal) 
--                 ^
您只是将字段主体的值插入到表中。但是Teams表还有其他字段。。。不向其中插入值将默认为NULL。这将导致争论中的矛盾。在您的团队表中:

根据定义,这些字段不能为空。但由于INSERT语句不插入任何值,这些值将默认为NULL,与定义冲突并导致错误

您可能想考虑设置以上字段的默认值,或者修改INSERT语句以适应这些字段。

INSERT INTO Teams (Principal, Team_Name, Nation, Seasons)
SELECT 
    -- four columns ...

主键的自动递增有效吗?对不起,我应该提到我是SQL新手。所以我不知道你是什么意思?嗨,欢迎来到So。但由于某些原因,它不会起作用,这应该更具体一些。您使用的样本数据是什么?预期输出是什么?是否有任何错误输出或消息?谢谢您的回答!但它究竟在哪里尝试分配空值呢?主体的所有我的值都被设置为它们的专有名称,所以它不应该只分配初始化值吗?插入到主体中此表达式只分配给列“主体”,并尝试将空值分配给其他列。是否有一种方法可以只插入主体而不尝试在其他任何地方插入空值?插入行时,它与该表的所有列一起插入。您可以在insert语句中定义特定的值,或者在insert语句中不定义该值,并让它使用表构造中已定义的默认值,或者在insert语句中不定义该值,如果未选中列的“NOTNULL”属性,则允许该值为空。谢谢!我很感激it@Clank当一个答案对你有用时;你可以把它标记为被接受的答案。请参阅:。你也会因此得到分数。谢谢:
Team_Name VARCHAR(30) NOT NULL
Nation VARCHAR(30) NOT NULL
Seasons INT NOT NULL
INSERT INTO Teams (Principal, Team_Name, Nation, Seasons)
SELECT 
    -- four columns ...