table示例:chi_variant_words_lib(中文變義詞詞表)
假設紅色部分爲我在代碼中需要插入的部分。
說明:下面的SQL語句示例是我用於Python中的代碼片段,所以使用了%s的寫法,如果直接寫SQL或想要在其他語言中使用只需稍作修改。
方式1:使用ignore關鍵字
INSERT IGNORE INTO chi_variant_words_lib (original_word, variant_word, is_need_validated, createTime) VALUES (%s,%s,%s, NOW())
注意:使用該方法有前提條件,即插入的記錄必須有用主鍵primary或者唯一索引unique區分了記錄的唯一性的字段。
方法2:使用insert … select … where not exist及虛表dual
INSERT INTO chi_variant_words_lib (original_word, variant_word, is_need_validated, createTime) SELECT %s, %s, %s, NOW() FROM DUAL WHERE NOT EXISTS (SELECT * FROM chi_variant_words_lib WHERE original_word=%s AND variant_word=%s)
注意:這裏插入時可以不光是通過primary 和unique來判斷,也可通過其它非唯一性字段進行是否需要插入的判斷。這種方法更通用,也比較符合我上面的插入需求,所以我最後在代碼中採用的此方法。