我有一个SQL查询。
INSERT INTO `t1`(col1, col2)
SELECT * FROM `t2`
WHERE NOT EXISTS (
SELECT*FROM `t1`
WHERE (
t1.col1 = t2.col1
AND
t1.col2 = t2.col2 )
);
此查询比较两个现有表“ t1”和“ t2”。 将表“ t2”中的数据插入表“ t1”中,两个表之间没有重复记录。 如何截断此SQL查询?可以用其他方式写吗?更轻松?
答案 0 :(得分:2)
是的,相关的suqbuery可以改写为LEFT JOIN
:
INSERT INTO t1 -- I suggest to explicitly list all columns
SELECT t2.*
FROM t2
LEFT JOIN t1 -- USING (col1, col2) -- instead of ON clause
ON t1.col1 = t2.col1
AND t1.col2 = t2.col2
WHERE t1.col1 IS NULL;
相关:Blind insert
答案 1 :(得分:2)
如果(col1,col2)是t1中的唯一键,则只需
insert ignore into t1 select * from t2;