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

时间:2012-07-17 19:54:53

标签: mysql insert inner-join mysql-workbench

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

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

我在加入2个表时遇到问题。 可以 在插入语句中使用内连接表吗?

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

        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;

2 个答案:

答案 0 :(得分:0)

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

无论如何,为了提供一些帮助,我建议你以不同的方式解决这个问题:

你在第一张桌子AFTER INSERT上放置一个触发器怎么样?此时,自动增量ID已知,可以使用触发器轻松插入表2中。

http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

答案 1 :(得分:0)

如果我理解你的问题,那么在重命名表格和列以符合您的信息后,这应该有效:

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)
)

只有在没有重复的公司名称但是给它一个镜头时,这才有效。