這個問題已被問及答覆了很多次,但我仍然難倒了。我想要的所有 如果列中尚未存在值,則運行插入語句。請注意,此列中的值不構成主鍵,因此replace
或update
方法將不起作用。使用EXISTS插入到MySQL 5.x中
word_id (PK, auto-complete) | word | timestamp (autocomplete)
1--sinecure--25th March
2--demotic--3rd April
3--atavism--5th May
之前增加一個詞來這個表,我首先要檢查它已經不存在。考慮到這一點,這個例子應該保持表格不變。
INSERT INTO word_table(word) VALUES "sinecure"
WHERE NOT EXISTS (SELECT word FROM word_table WHERE word LIKE "sinecure")
當然,表此查詢後是不變的,但僅僅是因爲它拋出一個錯誤。 這不是我嘗試過的唯一語法,但它是我看過的各種 論壇/教程中最經常提倡的語法。我也有過各種黑客攻擊,例如使用變量來存儲由EXISTS語句產生的bool值,但無濟於事。
+1這是把戲來克服這個*限制*在MySQL中。 – Augusto
@Augusto這裏沒有MySQL限制。 INSERT INTO TABLE VALUES(...)WHERE ...'在所有SQL方言中的語法無效。 –
選擇了獨特的限制路線。不完美,因爲它排除了列表中同形異義詞的存在,但它們並不多,所以我應該逃避它。 –