【问题标题】:MySQL insert into table foreign key column conditional insert i.e. exist or doesn't existMySQL插入表外键列条件插入,即存在或不存在
【发布时间】:2013-10-18 14:32:05
【问题描述】:

这里有两张表:

表 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的值可能存在也可能不存在,我需要处理这种情况。

【问题讨论】:

  • Din get u buddy..你能详细说明一下吗..
  • 只要在表中插入任何客户名称,就会始终生成客户 ID,因此我认为他们没有任何意义说特定客户的 ID 不存在。并且根据表1中的幽默插入在表2之前。

标签: mysql


【解决方案1】:
/* 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 */

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这里的目的是以更优化的方式做上面提到的。我不认为这是尝试每次插入的好方法。我应该尝试仅在选择操作失败时才插入。
    猜你喜欢
    • 2011-01-14
    • 2011-01-14
    • 2021-02-28
    • 1970-01-01
    • 2011-05-11
    相关资源
    最近更新 更多