2017-07-21 9 views
0

私は6列の比較的小さなデータベーステーブルを持っています。一意の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 ..... ; 

楕円の後に何が来るのかわかりません。私は下の例を例として見てきましたが、それは1つの列を更新するだけです。

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

関連する問題