2010-10-05 10 views
15

Me preguntaba ¿cuál sería la forma más fácil de actualizar una columna por +1? Actualizaré el recuento de publicaciones de una categoría según el momento en que los usuarios envíen una nueva publicación.MySQL Update Column +1?

Gracias.

+0

Lo siento, no entiendo. ¿Desea actualizar todas las filas configurando el valor de su columna en su valor anterior + 1? – Benoit

+0

@Benoit: el OP quiere almacenar y actualizar el recuento de publicaciones relacionadas con la categoría. –

Respuesta

26

La manera más fácil es no almacenar la cuenta, basándose en la función cuenta agregada para reflejar el valor, ya que está en la base de datos:

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 

Puede create a view albergar la consulta mencionada anteriormente, para que pueda consultar la vista como lo haría con una tabla ...

Pero si ya estás en el almacenamiento del número, utilice:

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

..replacing "?" con el valor apropiado

+4

+1 para una buena respuesta al problema, si no la pregunta – Amadan

+2

Gracias. Inicialmente, mi idea de determinar la cantidad de publicaciones en una categoría consistía en consultar las tablas de correos de un cat_id que coincidiera con esa categoría y luego sumarlos. Pensé que esto puede consumir recursos o ser menos eficiente que escribir directamente a esa mesa. – Cory

+1

Es muy rápido cuando tienes un índice en 'p.post_id'. – Amadan

22

Usted puede hacer:

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

+1

+1 para una buena respuesta a la pregunta literal – Amadan

7

¿Qué tal:

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