我想从tbl2表格中插入所有数字到tbl1表格中。但是,如果tbl2.number已经存在于tbl1.number中,那么就不要插入它。这个怎么做?如果不存在数字,则插入
INSERT INTO tbl1 (number) SELECT tbl2.number FROM tbl2
我想从tbl2表格中插入所有数字到tbl1表格中。但是,如果tbl2.number已经存在于tbl1.number中,那么就不要插入它。这个怎么做?如果不存在数字,则插入
INSERT INTO tbl1 (number) SELECT tbl2.number FROM tbl2
如果是有意义的有tbl1.number
独特的(或主要)指数,那么你可以使用INSERT IGNORE
:
INSERT IGNORE INTO tbl1 (number) SELECT tbl2.number FROM tbl2
也许使用“IIF”功能与“ISNULL”,以确定是否或者不在输入字段中存在tbl2号码。
普通SQL(MySQL的非特异性):
INSERT INTO tbl1 (number) SELECT tbl2.number FROM tbl2 WHERE tbl2.number not in (SELECT number from tbl1)
这是快于resokk答案吗? –
@ user791022 - 我怀疑答案取决于表的相对大小和重叠量。我认为唯一的方法是基准。 'SET profiling = 1','SHOW PROFILES'和'SHOW PROFILE'语句对此非常有用。在第一印象中,它看起来像Roman的解决方案做了两倍的索引检查,但MySQL可能会优化很多这一点。 –