Jak posortować tabelę MySQL według dwóch kolumn?
Chcę, aby artykuły były sortowane najpierw według najwyższych ocen, a następnie według najnowszych dat. Na przykład byłby to przykładowy wynik (lewy # to ocena, następnie tytuł artykułu, a następnie data artykułu)
50 | Ten artykuł kołysze | 4 lutego 2009 r 35 | Ten artykuł jest całkiem dobry | 1 lutego 2009 r 5 | Ten artykuł nie jest taki gorący | 25 stycznia 2009 r
Odpowiedni SQL, którego używam to:
ORDER BY article_rating, article_time DESC
Mogę sortować według jednego lub drugiego, ale nie obu.
mysql
sql-order-by
billynoah
źródło
źródło
posortuje według article_time tylko wtedy, gdy są dwa artykuły o tej samej ocenie. Z tego, co widzę w twoim przykładzie, dokładnie tak się dzieje.
ale zastanów się:
źródło
DESC
na końcu posortuje według obu kolumn malejąco. Musisz określić,ASC
czy chcesz inaczejźródło
Może to pomóc komuś, kto szuka sposobu sortowania tabeli według dwóch kolumn, ale równolegle. Oznacza to połączenie dwóch rodzajów za pomocą funkcji sortowania agregującego. Jest to bardzo przydatne, na przykład podczas wyszukiwania artykułów przy użyciu wyszukiwania pełnotekstowego, a także w odniesieniu do daty publikacji artykułu.
To tylko przykład, ale jeśli wpadniesz na pomysł, możesz znaleźć wiele funkcji agregujących do użycia. Możesz nawet zważyć kolumny, aby preferować jedną zamiast drugiej. Moja funkcja przyjmuje skrajności z obu rodzajów, dlatego najbardziej cenione wiersze znajdują się na górze.
Przepraszam, jeśli istnieją prostsze rozwiązania do wykonania tej pracy, ale nie znalazłem żadnej.
źródło
Poniższe uporządkuje dane w zależności od obu kolumn w porządku malejącym.
źródło