2017-07-21 4 views
0

Ich habe eine relativ kleine Datenbanktabelle mit sechs Spalten.Mehrere Spalten in MySQL aktualisieren, wenn eindeutige ID existiert

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

ID ist offensichtlich der eindeutige Schlüssel. Ich möchte in der Lage sein, alle Spalten in einem Datensatz NUR zu aktualisieren, wenn der UNIQUE-Schlüssel nicht derselbe ist.

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

Ich bin mir nicht sicher, was nach den Ellipsen kommt. Ich habe das unten als ein Beispiel gesehen, aber das befasst sich nur mit der Aktualisierung einer Spalte.

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

Ich hoffe, Sie eine durch Kommata getrennte Liste tun können, aber ich will nicht meine Datenbank herauszufinden, ruinieren!

+0

Aber .. eindeutiger Schlüssel wird nie mehr so ​​sein, ich denke? Tust du nicht automatisch in deiner ID-Spalte? – Jeppesen

+0

Machen Sie eine Datenbanksicherung, stellen Sie sie in einer anderen Datenbank wieder her und spielen Sie herum. Aber Sie sind corect, Sie können Komma getrennte Liste Ihrer Anweisungen tun. –

+0

Korrigieren Sie mich, wenn ich falsch liege, aber 'ON DUPLICATE KEY' hat das Verhalten von _updating_ einem Datensatz, wenn der Datensatz bereits mit dem eindeutigen Schlüssel übereinstimmt und nicht umgekehrt. Wenn der Datensatz nicht doppelt vorhanden ist, wird keine Aktualisierung durchgeführt. –

Antwort

0

normale Update-Struktur nach ON DUPLICATE KEY UPDATE, Beispiel:

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

Danke. Ich nahm auch eine Sicherungskopie, bevor ich damit anfing, aber es funktionierte perfekt. Guter Rat für alle Beteiligten. – Shwmae

Verwandte Themen