2014-02-24 69 views
1

我有一個包含三列('xCoord','yCoord'和'Total')的表格。如果x,y座標對已經存在,我想增加Total值,否則我想創建一個新的行,其中Total = 1的新x和y值。MySQL:如果存在增量值,則創建如果不存在(多個條件)

以下是我迄今爲止的最佳嘗試 - 運行第一次查詢添加一個新行(如預期的),第二次運行它添加一個新行,而不是增加以前創建的行,但?有沒有一種方法可以用單個查詢執行此操作?

INSERT 
INTO tbl_DATA_HeatmapValues (xCoord, yCoord, Total) 
VALUES (11, 22, 1) 
ON DUPLICATE KEY 
UPDATE Total = Total + 1 

回答

1

您的查詢應該可以正常工作,但您需要具有唯一索引。如果一行已經存在,則檢查是基於索引,而不是行中的實際數據。沒有索引,不檢查它是否存在,因此無論插入什麼。

0

INSERT ... ON DUPLICATE KEY UPDATE執行更新只有在插入會導致一個唯一索引或主鍵的重複值(一個或多個),
看到這個鏈接的詳細信息:http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html

考慮創建於XCOORD,YCOORD列的唯一索引:

CREATE UNIQUE INDEX ON tbl_DATA_HeatmapValues (xCoord, yCoord) 
+0

被要求你的代碼的細微變化,使索引創建工作:'CREATE UNIQUE INDEX INDEX_NAME ON tbl_DATA_HeatmapValues(XCOORD,YCOORD); ' – AdamDynamic

相關問題