2012-02-18 89 views
0

基本上,我有一個表稱爲文件,其中包含一個名爲「主機」列中。我創建了另一個名爲「rev_host」的列,我只想將反向字符串從「host」存儲到「rev_host」。例如,如果「主機」值是「www.cmu.edu」,我想將「ude.umc.www」保存到「rev_host」。然後我用一個聲明MySQL的INSERT SELECT語句拋出錯誤1062:重複的項目「」的關鍵2

INSERT INTO document (rev_host) SELECT REVERSE(host) from document; 

本聲明將引發1062錯誤:

ERROR 1062 (23000): Duplicate entry '' for key 2 

這是什麼說法的問題呢?如果我不能這樣插入。什麼是正確的方式來執行此插入?

+0

出於好奇,有什麼用在原有基礎上「www.cmu.edu」而反轉字符串特別禁止你比使用不同的表?看起來,如果轉換始終是一致的(REVERSE),則可以通過在需要時進行反轉(選擇等)來節省額外的存儲空間並插入。這將遵循練習「不要存儲你可以計算的東西」 – hexparrot 2012-02-18 22:33:22

回答

2

您的查詢插入一大堆的表中的新的生產線,從而引入重複鍵。如果你想只更新一列,並保留原來的條目中使用UPDATE代替:

UPDATE document SET rev_host=REVERSE(host); 
+0

感謝您的回答。其實我幾乎在那裏,我使用下面的語句:UPDATE文檔SET rev_host =(選擇REVERSE(主機)從文檔);但得到了「語法錯誤」錯誤。你的答案真的有用! – fanchyna 2012-02-18 22:33:35

相關問題