如何比较ID将表2中的新行插入表1中?

时间:2019-07-12 09:53:02

标签: mysql sql

我想知道如何在表2的表1中插入新行。想法是通过比较两个表,如果在第二个表中找不到表1中的相同ID,则会插入新行表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

3 个答案:

答案 0 :(得分:0)

您可以将INSERT INTO .. SELECTLEFT JOINIS NULL一起使用,以仅从Table2中获取Table1中不存在的行

INSERT INTO Table1 (ID, Name, Surname)
SELECT t2.ID, t2.Name, t2.Surname 
FROM Table2 t2 
LEFT JOIN Table1 t1 ON t1.ID = t2.ID 
WHERE t1.ID IS NULL

答案 1 :(得分:0)

您可以尝试使用左联接

insert into table1 
  select id, name, surname from table2 left join table1 on table2.id=table1.id
  where table1.id is null

答案 2 :(得分:0)

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

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);

最后的声明是无操作-除了防止错误外,它什么也不做。

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