MySQL插入表外键列条件插入即存在或不存在

时间:2013-10-18 05:53:56

标签: mysql

以下是两个表格:

表1:

CustomerId  | CustomerName

表2:

OrderId  | OrderNo  | CustomerId

现在我想通过单个查询将记录插入到表2中,即

Insert Into Table2 (OrderId,OrderNo,CustomerId) values (1,2456,( if select CustomerId from Customer where CustomerName = 'abc' is non-zero return id else insert into customer (CustomerId,CustomerName) values (1,'abc') return newly added customerid)

注意:ID是自动生成的,可以忽略,只是从理解的角度来看。

简而言之,我需要将记录插入到table2中,customerid的值可能存在或者可能不存在,我需要处理这种情况。

2 个答案:

答案 0 :(得分:0)

/* first execute first query, */
$q1=mysql_query($sql1);  /* for first table */
$foreign_id=mysql_insert_id(); /* fetch last id from first table*/
$q2=mysql_query($sql2)  /* insert into second table use $foreign_id as foreign key */

答案 1 :(得分:0)

在使用单个语句的MySQL中似乎不可能。但是,以下应该有效:

INSERT IGNORE INTO Table1 (CustomerName) VALUES ('abc');
INSERT INTO Table2 (OrderId,OrderNo,CustomerId) 
    VALUES (1,2456,(SELECT CustomerId FROM Table1 WHERE CustomerName='abc'));