2012-06-08 85 views
0

我想从tbl2表格中插入所有数字到tbl1表格中。但是,如果tbl2.number已经存在于tbl1.number中,那么就不要插入它。这个怎么做?如果不存在数字,则插入

INSERT INTO tbl1 (number) SELECT tbl2.number FROM tbl2 

回答

2

如果是有意义的有tbl1.number独特的(或主要)指数,那么你可以使用INSERT IGNORE

INSERT IGNORE INTO tbl1 (number) SELECT tbl2.number FROM tbl2 
+0

这是快于resokk答案吗? –

+0

@ user791022 - 我怀疑答案取决于表的相对大小和重叠量。我认为唯一的方法是基准。 'SET profiling = 1','SHOW PROFILES'和'SHOW PROFILE'语句对此非常有用。在第一印象中,它看起来像Roman的解决方案做了两倍的索引检查,但MySQL可能会优化很多这一点。 –

-1

也许使用“IIF”功能与“ISNULL”,以确定是否或者不在输入字段中存在tbl2号码。

2

普通SQL(MySQL的非特异性):

INSERT INTO tbl1 (number) SELECT tbl2.number FROM tbl2 WHERE tbl2.number not in (SELECT number from tbl1) 
相关问题