2010-11-11 26 views
6

Ich habe dies erfolgreich mit einer UPDATE-Anweisung vor, aber nicht eine REPLACE.Inkrementieren Feldwert bei ERSETZEN

Ich spare Lieblingselemente in einer MySQL-Tabelle, wenn ein Benutzer ausgecheckt hat.

Tabelle Favs ist:

USER (int) 
ITEM (int) 
COUNT (int default 0) 

Die SQL ich versuche ist:

REPLACE INTO favs (user,item,count) VALUES ('1','3', count + 1) 

obwohl es keine Fehler werfen Sie es nicht den Wert entweder zu erhöhen scheint.

Ist das möglich? Vielen Dank.

Antwort

15

Sieht so aus, als ob es beim Ersetzen nicht so funktioniert. Von den manual:

können Sie nicht auf Werte aus den aktuellen Zeilen beziehen und sie in der neuen Reihe verwenden. Wenn Sie eine Zuordnung wie SET col_name = col_name + 1, die Bezug auf den Spaltennamen auf der rechten Seite wird behandelt, als DEFAULT (col_name), so dass die Zuordnung entspricht col_name auf SET = DEFAULT (col_name) + 1.

Edit:

jedoch INSERT ... ON DUPLICATE UPDATE könnte tun, was Sie versuchen zu erreichen:

INSERT INTO favs (user, item) VALUES (2, 3) 
    ON DUPLICATE KEY UPDATE count = count + 1; 
+0

OK nicht w Ich werde sofort eine separate UPDATE-Anweisung machen. Vielen Dank. – Titan

+0

Bitte sehen Sie meine Bearbeitung - ist das, was Sie versuchen zu tun? In diesem Fall wäre es sicherer und effizienter als separate Ersetzungen und Aktualisierungen. – Thilo

+1

yer das funktioniert super danke, außer Sie müssen 'SET' aus der Anweisung entfernen, damit es funktioniert. – Titan