2010-10-05 6 views
15

Zastanawiam się, jaki byłby najłatwiejszy sposób aktualizacji kolumny o +1? Będę aktualizował liczbę postów w kategorii na podstawie tego, kiedy użytkownicy przesyłają nowy wpis.Kolumna aktualizacji MySQL +1?

Dzięki.

+0

Przykro mi, nie rozumiem. Czy chcesz zaktualizować wszystkie wiersze ustawiając wartość swojej kolumny na jej starą wartość + 1? – Benoit

+0

@Benoit: OP chce przechowywać i aktualizować liczbę postów związanych z kategorią. –

Odpowiedz

26

Najprostszym sposobem jest nie sklepie Count, powołując się na funkcji COUNT zbiorczej odzwierciedlać wartość, jak to jest w bazie danych:

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 

Możesz create a view wstawić zapytanie wymienione powyżej, aby można było zapytać widok tak samo, jak chcesz tabeli ...

Ale jeśli jesteś ustawiony na przechowywanie numer, użyj:

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

..replacing "?" z odpowiednią wartością.

+4

+1 za dobrą odpowiedź na problem, jeśli nie pytanie – Amadan

+2

Dzięki. Początkowo moją myślą o określeniu liczby postów w kategorii byłoby sprawdzenie tabel postów dla cat_id pasujących do tej kategorii, a następnie dodanie ich. Sądzę, że to może być pochłaniające zasoby lub mniej wydajne niż pisanie bezpośrednio do tego stołu. – Cory

+1

Jest to bardzo szybkie, gdy masz indeks na 'p.post_id'. – Amadan

22

można zrobić:

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

+1

+1 za dobrą odpowiedź na dosłowne pytanie – Amadan

7

Jak o:

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