我想從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可能會優化很多這一點。 –