2017-03-22 124 views
-3

其实我需要在比较两个mysql表与多列时更新mysql记录,如果记录不存在,它应该插入一个新的记录。我怎样才能实现它?以下是我的情况。由于事先如何通过比较多列来更新mysql记录

表1:

Name | Age | occupation | DOJ | Salary | 
---------------------------------------------------------------- 
Raju | 27 | Manager | 12/12/12 | 12,000 
-------------------------------------- 
Raman | 30 | Director | 11/11/11 | 14,000 
- 
Sriram | 25 | Assistant | 10/10/10 | 10,000 
- 

表2:

Name | Age | occupation | DOJ | Salary | 
---------------------------------------------------------------- 
Raju | 27 | Manager | 12/12/12 | 12,000 
-------------------------------------- 
Raman | 30 | Director | 8/8/8 | 18,000 
- 
Ravi | 34 | CEO | 9/9/9 | 30,000 
- 

我有一个excel与一堆具有上述结构的记录,我需要在临时表中上载的记录(temp_table),然后将该表与main表(main_table)进行比较,以确定是否有任何记录存在或不存在,如果存在任何更新,则需要在Main_table上执行该更新,否则将其作为新的插入到main_table中。

谢谢。

+0

您需要在Table 1和Table上的姓名,年龄,职业,司法部和工资创建唯一索引。然后,你可以“全天插入table1中的table1 select *”。或者'如果你想更新东西,则替换为table2中的select *。 – Dimi

+0

你的问题不是很清楚。你将在哪里插入?,你会在哪里更新?为什么拉曼表1与拉曼表2不同?向我们展示数据库模式,样本数据和预期输出。 \t请阅读[**如何提问**](http://stackoverflow.com/help/how-to-ask) \t \t这里是一个伟大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)来了解如何提高您的问题质量并获得更好的答案。 –

+4

[Insert into MySQL table or update if exists](可能存在重复)(http://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists) –

回答

1

当且仅当给定Name存在时,您可以编写一个将返回1的选择。然后你可以使用这个作为另一个选择的子查询,否定存在,找到应该插入的内容。最后,你可以使用第二个选择的insert - select

insert into Table2(Name, Age, Occupation, Doj, Salary) 
select Name, Age, Occupation, Doj, Salary 
from Table1 t2 where not exists (select 1 
           from Table2 t 
           where t.Name = t2.Name)