2017-07-21 78 views
0

我有一個相對較小的數據庫表,並且有六列。如果存在唯一ID,則更新MySQL中的多個列

ID | Rank | PrevRank | Player | Country | Points |

ID顯然是唯一的關鍵。我希望只有在UNIQUE鍵不相同的情況下才能更新記錄中的所有列。

INSERT INTO rankings (id,rank,prevrank,player,country,points) 
VALUES ($id, $rank, $prevrank, $player, $country, $points) 
ON DUPLICATE KEY UPDATE ..... ; 

我不確定橢圓之後會出現什麼。我已經看到下面的例子,但只涉及更新一列。

INSERT INTO funds (`fund_id`, `date`, `price`) VALUES (23, DATE('2013-02-12'), 22.5) ON DUPLICATE KEY UPDATE `price` = `price`;

我希望你可以做一個逗號分隔的列表,但我不想毀了我的數據庫中查不到! ON DUPLICATE KEY UPDATE

+0

但是...唯一鍵永遠不會是我想的一樣嗎?你不在自己的ID列上做自動增量嗎? – Jeppesen

+0

做一個數據庫備份,將其恢復到不同的數據庫並進行瀏覽。但你是corect,你可以用逗號分隔你的指令列表。 –

+0

如果我錯了,請糾正我,但如果記錄已經與唯一密鑰匹配,則'ON DUPLICATE KEY'具有_updating_記錄的行爲,而不是其他方式。如果記錄不重複,則不會發生更新。 –

回答

0

正常更新結構,例如:

... ON DUPLICATE KEY UPDATE rank=$rank, player=$player, etc ... 
+0

謝謝。在開始之前也採取了備份,但它完美地工作。對所有參與者的好建議。 – Shwmae

相關問題