我想知道如何在表2的表1中插入新行。想法是通过比较两个表,如果在第二个表中找不到表1中的相同ID,则会在表1中插入新数据1。

这是两个表,也是我要执行的操作:

Tabla 1  
ID-Name-Surname  
1-Oriol-Molina

Tabla 2
ID-Name-Surname  
1-Oriol-Molina  
2-Ricard-Martin

结果将是这样的:

Tabla 1  
ID-Name-Surname  
1-Oriol-Molina  
2-Ricard-Martin

Tabla 2
ID-Name-Surname  
1-Oriol-Molina  
2-Ricard-Martin
分析解答

使用数据库强制执行数据完整性。也就是说,如果您不想在表中重复id,则声明一个唯一的index/constraint:

create unique index unq_table1_id on table1(id);

然后,在MySQL中,您可以使用on duplicate key update

insert into table1 (id, name, surname)
    select id, name, surname
    from table2 
    on duplicate key update id = values(id);

最后的语句是no-op -除了防止错误外,它什么也不做。

这种方法的优势在于,数据库将确保id对于将数据插入表中的任何语句都是唯一的,而不仅限于此。