2010-10-05 13 views
15

Mi chiedevo quale sarebbe il modo più semplice per aggiornare una colonna di +1? Aggiornerò il numero di post di una categoria in base a quando gli utenti inviano un nuovo post.Colonna di aggiornamento di MySQL +1?

Grazie.

+0

Mi dispiace, non capisco. Vuoi aggiornare tutte le righe impostando il valore della tua colonna sul suo vecchio valore + 1? – Benoit

+0

@Benoit: l'OP vuole memorizzare e aggiornare il numero di post relativo alla categoria. –

risposta

26

Il modo più semplice è quello di non negozio il conteggio, basandosi sulla funzione COUNT aggregata in modo da riflettere il valore in quanto è nel database:

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 

È possibile create a view ospitare la query di cui sopra, quindi è possibile interrogare la visualizzazione proprio come si farebbe con un tavolo ...

Ma se si sta insieme a memorizzare il numero, utilizzare:

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

..replacing "?" con il valore appropriato.

+4

+1 per una buona risposta al problema, se non la domanda – Amadan

+2

Grazie. Inizialmente il mio pensiero per determinare la quantità di post in una categoria sarebbe di controllare le tabelle dei post per un cat_id che corrisponde a quella categoria e quindi aggiungerli. Pensavo che questo potesse essere un consumo di risorse o meno efficiente rispetto alla scrittura diretta su quel tavolo. – Cory

+1

È molto veloce quando si ha un indice su "p.post_id". – Amadan

22

Si può fare:

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

+1

+1 per una buona risposta alla domanda letterale – Amadan

7

ne dite:

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