我想知道如何在表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
答案 0 :(得分:0)
您可以将INSERT INTO .. SELECT
与LEFT JOIN
和IS 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
对于将数据插入表中的任何语句都是唯一的。