2011-10-01 105 views
0

我有這個疑問,我要插入到從表中的家園表exp_channel_data數據,但它插入7個8項,然後返回錯誤:插入數據的重複鍵

[Err] 1062 - Duplicate entry '8' for key 'PRIMARY'

這是我的查詢(我減少了場是可讀的):

INSERT INTO exp_channel_data (entry_id,site_id,channel_id,field_id_1) SELECT 7,1,1,summary FROM homes ON DUPLICATE KEY UPDATE entry_id = entry_id+1 
+0

桌子上的主要和唯一鍵是什麼? –

+1

'entry_id'是主鍵嗎?我想你試圖插入一個新的記錄,如果一個存在相同的ID通過增加ID,但當然不會工作。 'ON DUPLICATE KEY UPDATE entry_id = entry_id + 1'將改變已經在表格上的記錄的entry_id,而不是將被插入的記錄的entry_id。 – Shef

+0

上exp_channel_data主要是沒有AUTO_INCREMENT的entry_id和家中的小學和AUTO_INCREMENT是id字段。在exp_channel_data已經有一些項目與entry_id = 2,3,4,5,6這就是爲什麼我開始有選擇7 – chchrist

回答

0

如果您希望將所有homes表中的數據複製到新的一個:

INSERT INTO exp_channel_data 
    (entry_id, site_id, channel_id, field_id_1) 

    SELECT homes_id + (COALESCE(maxExp,0) + 1 - minHomes) 
     , site_id, channel_id, summary 
    FROM homes AS h 
    CROSS JOIN 
     (SELECT MAX(entry_id) AS maxExp 
     FROM exp_channel_data 
    ) AS mh 
    CROSS JOIN 
     (SELECT MIN(homes_id) AS minHomes 
     FROM exp_channel_data 
    ) AS me 
+0

爲什麼選擇homes_id? – chchrist

+0

你說你想把所有數據從'homes'複製到'exp_channel_data' –