2010-01-31 103 views
10

我建立一個評級系統,我想插入新行,如果name已包含name我想插入,如果它確實存在,我想1MySQL的插入在重複鍵

增加count領域舉例來說,如果我有一個排的name「湯姆」,我嘗試插入另一行與name「湯姆,然後我想+1上該行的領域count那已經存在。

如果與name「湯姆」的行不存在,我想插入一個新的,並設置count爲1

我知道我可以用約3 SQL語句和一些if語句做到這一點,但是當2/3 sql命令正在執行時,這會使腳本變慢。

任何想法? 謝謝!

回答

12

看到INSERT ... ON DUPLICATE KEY UPDATE

如果指定了對重複密鑰更新,和行插入,將導致一個唯一索引或主鍵的重複值,則執行舊行的更新。

例如

INSERT INTO table (name,counter) VALUES ('Bob', 1) 
    ON DUPLICATE KEY UPDATE counter=counter+1 
+0

嗯,它不太工作 - 雖然沒有錯誤。我可以指定它應該「重複」的字段嗎? – tarnfeld 2010-01-31 12:08:14

+0

排序,我將它添加到表的主鍵:D – tarnfeld 2010-01-31 12:11:00

+0

不必是主鍵。一個唯一的關鍵就足夠了(儘管PRIMARY始終是唯一的) – VolkerK 2010-01-31 12:23:11