PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Problem z sortowaniem Postgres

Nie masz pewności, na czym dokładnie polega Twój problem lub w jaki sposób „nie działa” z powodu braku szczegółów w Twoim pytaniu. Ale co najmniej dwa czynniki mogą wpłynąć na sortowanie w taki sposób, że otrzymasz różne wyniki w MySQL i PostgreSQL.

Pierwszy to zestawianie . W szczególności jeśli grasz z wersją 9.1 beta. Ostatnio zainstalowałem MySQL (co było jakiś czas temu, więc od tego czasu mogli to naprawić), domyślnie sortował rzeczy jako latin-1/szwedzki, vs utf-8/english dla PostgreSQL.

Drugi jest zerowy. MySQL zawsze umieszcza je na końcu, jeśli pamięć służy. W przeciwieństwie do tego, PostgreSQL konsekwentnie umieszcza je na końcu indeksów btree, a tym samym umieszcza je jako ostatnie przy porządkowaniu asc i pierwsze przy porządkowaniu desc. Możesz zmienić to zachowanie, zamawiając za pomocą najpierw nulls/ostatni null .

Domyślam się, że w twoim konkretnym przypadku chcesz order by rating desc nulls last , w przeciwieństwie do domyślnego zachowania, które najpierw umieszcza wartości null.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego typ danych char jest automatycznie konwertowany na bpchar?

  2. flyway nie może połączyć się z kontenerem postgres w skrypcie docker-entrypoint-initdb.d

  3. Jak zaimportować wiersze do Postgresql ze standardu STDIN?

  4. Perl + PostgreSQL — selektywna transpozycja kolumny do wiersza

  5. Zwróć identyfikator, jeśli wiersz istnieje, WSTAW W przeciwnym razie