2010-10-05 20 views
15

Ich frage mich, was wäre der einfachste Weg, um eine Spalte um +1 zu aktualisieren? Ich werde die Anzahl der Beiträge einer Kategorie basierend darauf aktualisieren, wann die Nutzer einen neuen Beitrag einreichen.MySQL Update Spalte +1?

Danke.

+0

Es tut mir leid, ich verstehe nicht. Möchten Sie alle Zeilen aktualisieren, indem Sie den Wert Ihrer Spalte auf den alten Wert + 1 setzen? – Benoit

+0

@Benoit: Das OP möchte die mit der Kategorie verknüpfte Postanzahl speichern und aktualisieren. –

Antwort

26

Der einfachste Weg ist, um nicht speichern die Zählung auf der Aggregatfunktion COUNT verlassen den Wert widerspiegeln, wie sie in der Datenbank:

SELECT c.category_name, 
      COUNT(p.post_id) AS num_posts 
    FROM CATEGORY c 
LEFT JOIN POSTS p ON p.category_id = c.category_id 

Sie können create a view die oben genannte Abfrage enthalten, so können Sie die Ansicht genau wie Sie eine Tabelle abfragen ...

Aber wenn Sie auf Speichern der Anzahl festgelegt sind, verwenden:

UPDATE CATEGORY 
    SET count = count + 1 
WHERE category_id = ? 

..replacing "?" mit dem entsprechenden Wert.

+4

+1 für eine gute Antwort auf das Problem, wenn nicht die Frage – Amadan

+2

Vielen Dank. Anfangs dachte ich, um die Anzahl der Posts in einer Kategorie zu bestimmen, würde ich die post-Tabellen für eine cat_id überprüfen, die dieser Kategorie entspricht, und sie dann addieren. Dachte, dass dies Ressourcenverbrauch oder weniger effizient sein kann, als direkt in diese Tabelle zu schreiben. – Cory

+1

Es ist sehr schnell, wenn Sie einen Index für 'p.post_id' haben. – Amadan

22

Sie tun können:

UPDATE categories SET posts = posts + 1 WHERE category_id = 42;

+1

+1 für eine gute Antwort auf die wörtliche Frage – Amadan

7

Wie wäre:

update table 
set columnname = columnname + 1 
where id = <some id> 
5
update post set count = count + 1 where id = 101 
Verwandte Themen