在Insert语句MySql中将表2中的自动递增ID插入表1

在Insert语句MySql中将表2中的自动递增ID插入表1,mysql,insert,inner-join,mysql-workbench,Mysql,Insert,Inner Join,Mysql Workbench,我在MySql中有一个存储过程,我试图在Person_表中插入值。 Person_表中的一列是CompanyID 但是我需要从Company\u表中检索CompanyID。CompanyID是一个自动递增的主键。两个表都有列CompanyName。 我想在相同的过程中将Company+Table.CompanyID插入Person\u Table.CompanyID列 我在连接两个表时遇到问题能否在insert语句上内部联接表 这是我到目前为止所做的,但它不喜欢内部连接: ins

我在MySql中有一个存储过程,我试图在Person_表中插入值。 Person_表中的一列是CompanyID

但是我需要从Company\u表中检索CompanyID。CompanyID是一个自动递增的主键。两个表都有列
CompanyName
。 我想在相同的过程中将
Company+Table.CompanyID
插入
Person\u Table.CompanyID

我在连接两个表时遇到问题能否在insert语句上内部联接表

这是我到目前为止所做的,但它不喜欢内部连接:

        insert into person p
    (FarmName, FirstName, MiddleName, LastName, Phone, CompanyID)
    values
   ( oFarmName, oFirstName, oMiddleName, oLastName, oPhone, oCompanyID)   

    inner join company c on p.FarmNamne =  c.CompanyName
    where p.FarmName = c.CompanyID;

我无法回答是否可以插入内部连接,但我的感觉是不可能的

无论如何,为了提供一点帮助,我建议您以不同的方式解决此问题:

在INSERT之后,在第一张表上设置触发器怎么样。此时,自动增量id是已知的,可以使用触发器轻松地插入表2中


如果我正确理解了您的问题,那么在重命名表和列以匹配您的信息后,这应该会起作用:

INSERT INTO Person_Table
(FarmName, FirstName, MiddleName, LastName, Phone, CompanyID)
VALUES
( oFarmName, oFirstName, oMiddleName, oLastName, oPhone, (
    SELECT c.CompanyId FROM Person_Table p 
    INNER JOIN Company_Table c ON c.CompanyName = p.CompanyName)
)

这只有在没有重复的公司名称时才有效,但请试一试。

谢谢。我正试图使用触发器。这是我第一次使用它们,所以我不知道确切的语法。这是我到目前为止所做的,但它不起作用
CREATE DEFINER=CURRENT\u USER TRIGGER Assign\u CompanyID在插入到每行的个人之前设置NEW.CompanyID=Company.CompanyID,其中individual.FarmName=CompanyName.CompanyName
这未经测试,但在插入到每行的个人之后尝试
CREATE TRIGGER Assign\u CompanyID开始插入到_table_2 SET table_2_company_id=NEW.CompanyID,table_2_other_field=NEW.other_field;结束