MySQL从其他表中插入数据 [英] MySQL insert data from other table

查看:199
本文介绍了MySQL从其他表中插入数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题类似于我以前的问题,除了这是INSERT而不是更新
我有两个表:联系人和公司。

This question is similar to my previous question except this is INSERT instead of update I have two tables: contacts and companies.

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_id = company.id的联系人。

I can move update data from company to contacts where there contact.company_id = company.id.

但是我该如何做INSERT而不是所有的公司,在那里没有联系呢?或者使事情更简单,我如何将所有公司表数据移动到联系人表数据。例如:

But how can I do INSERT instead for all the company where does not have contact yet? or to make things simpler, how can I move all companies table data into contacts table data. 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或无。

So I would like the entry like that, and for the one that is no value will be default to NULL or None

推荐答案

我想你想要的:

INSERT INTO Contacts (id,group_id,company_id,email,name)
SELECT co.id,co.group_id,co.id,co.email,co.name
FROM company co
LEFT JOIN contacts c ON co.id = c.company_id
WHERE c.company_id IS NULL

这将插入所有信息从公司的联系人,还没有在那里。列电话将留空,因为在该列的联系人中没有信息。

This will insert all the information from contacts in company that wasn't already there. the column phone will be left null, since there is no information in contacts for that column.

这篇关于MySQL从其他表中插入数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆