Php MySQL从其他表插入数据

Php MySQL从其他表插入数据,php,mysql,sql,database,sql-insert,Php,Mysql,Sql,Database,Sql Insert,这个问题与我之前的问题类似,只是这是插入而不是更新 我有两张桌子:联系人和公司 contacts has : id, group_id, company_id, email, company companies has: id, group_id, name, email 所以使用这个查询 UPDATE contacts c INNER JOIN companies co ON c.company_id = co.id SET c.group_id = co.group_id, c.

这个问题与我之前的问题类似,只是这是插入而不是更新 我有两张桌子:联系人和公司

contacts has : id, group_id, company_id, email, company
companies has: id, group_id, name, email
所以使用这个查询

UPDATE contacts c
INNER JOIN companies co ON c.company_id = co.id 
SET c.group_id = co.group_id,
    c.company = companies.name
我可以将更新数据从公司移动到存在contact.company\u id=company.id的联系人

但我如何才能为所有尚未联系的公司插入?或者更简单地说,如何将所有公司的表数据移动到联系人表数据中。e、 g:

Companies
id   group_id   name   email
1    1          abc    a@a.com
2    1          def    d@d.com
3    1          ghi    g@g.com

Contacts
id   group_id   company_id   email     company   phone
1    1          1            a@a.com   abc
2    1          2            d@d.com   def
3    1          3            g@g.com   ghi

所以我希望条目是这样的,对于没有值的条目,它将默认为NULL或None

我相信您需要在select语句中的两个表之间进行外部联接,然后在目标表中查找一个为NULL的字段,并只选择那些行

insert into t1 (f1,f2,f3) select s1,s2,s3 from sourcetable as st 
  left outer join t1 on 
      t1.f1=st.s1,
      t1.f2=st.s2,
      t1.f3=st.s3
  where t1.id is null;
这样,您只能从st获取t1中没有id的行。

我想您需要:

插入联系人(id、组id、公司id、电子邮件、姓名)
选择co.id、co.group\u id、co.id、co.email、co.name
来自公司
左连接联系人c ON co.id=c.company\u id
其中c.company\u id为空

这将插入公司中尚未存在的联系人的所有信息。由于联系人中没有该列的信息,列phone将保留为空。

您是否设置了主键?您看过
INSERT IGNORE
?@DevlshOne well主键在两个表上都设置为id。基本上由于规范的变化,该项目将不再使用companys表,我需要从公司迁移所有数据,并将其作为联系人处理。我应该如何使用INSERT IGNORE?你能告诉我这个问题吗?