To content
tabela:Aktualizacja kolumny tak, że zawiera ona pozycję wiersza
ContentID | CategoryID | Position | Other1 | Other2
===================================================
1 | 1 | NULL | abcd | efgh
2 | 1 | NULL | abcd | efgh
3 | 1 | NULL | abcd | efgh
4 | 2 | NULL | abcd | efgh
5 | 2 | NULL | abcd | efgh
6 | 2 | NULL | abcd | efgh
Są to pytania będę uruchomione:
SELECT ContentID FROM content WHERE CategoryID = 1 ORDER BY Position
SELECT ContentID FROM content WHERE CategoryID = 2 ORDER BY Position
Teraz chcę wdrożyć w górę, przesuń w dół, przejdź na górę i przejdź do dolnej funkcji zawartości. Wszystko, co muszę zrobić, to wypełnić kolumnę Pozycja numerami:
ContentID | CategoryID | Position
=================================
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
5 | 2 | 2
6 | 2 | 3
Czy można to osiągnąć za pomocą pojedynczego zapytania w MySQL? Coś jak:
UPDATE content
SET Position = <ROW_NUMBER>
WHERE CategoryID = 1
ORDER BY Position
UPDATE content
SET Position = <ROW_NUMBER>
WHERE CategoryID = 2
ORDER BY Position
prawdopodobnie można użyć instrukcji CASE jakoś, ale dwie kwerendy może być lepiej. – dqhendricks
@ Eveve: Właśnie udało mi się to zrobić. –
'update content set position = id' –