如何设置应插入的确切行数"插入忽略...选择..."查询?

时间:2014-10-07 10:17:21

标签: mysql insert

假设我以下查询的结果是1000行:

SELECT * from table1 where ...;

如果我只想将100个选择结果插入到table2中,那么解决方案将是:

INSERT IGNORE into table2 SELECT * from table1 where ... limit 100;

问题是,可能有一些重复,因此这个查询插入,比方说,90个记录,它实际上可以插入100,例如,如果我将限制设置为110。

如何修复此查询?

2 个答案:

答案 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;