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.