假设我以下查询的结果是1000行:
SELECT * from table1 where ...;
如果我只想将100个选择结果插入到table2中,那么解决方案将是:
INSERT IGNORE into table2 SELECT * from table1 where ... limit 100;
问题是,可能有一些重复,因此这个查询插入,比方说,90个记录,它实际上可以插入100,例如,如果我将限制设置为110。
如何修复此查询?
答案 0 :(得分:2)
您可以只选择那些在表2中没有重复的记录:
INSERT IGNORE into table2
SELECT * from table1
where ... AND table1.id NOT IN (SELECT id FROM table2) limit 100;
这假设问题是由table2中出现的重复ID引起的,触发了ignore。如果你的table1有重复的id,你可能还想查看Ronak Shah的答案。
答案 1 :(得分:1)
尝试以下:
INSERT IGNORE into table2 SELECT distinct * from table1 where ... limit 100;