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?你能告诉我这个问题吗?