Tidak yakin apa masalah Anda sebenarnya atau bagaimana "tidak berfungsi", karena kurangnya detail dalam pertanyaan Anda. Tetapi setidaknya ada dua faktor yang dapat memengaruhi penyortiran sedemikian rupa sehingga Anda akan mendapatkan hasil yang berbeda di MySQL dan PostgreSQL.
Yang pertama adalah kolasi . Khususnya jika Anda bermain dengan 9.1 beta. Terakhir saya menginstal MySQL (yang beberapa waktu lalu, jadi mereka mungkin telah memperbaiki ini sejak), itu menyusun hal-hal sebagai latin-1/swedia secara default, vs utf-8/english untuk PostgreSQL.
Yang lainnya adalah nol. MySQL selalu menempatkan ini terakhir jika memori berfungsi. Sebaliknya, PostgreSQL secara konsisten menempatkannya di akhir indeks btree, dan dengan demikian menempatkannya terakhir saat memesan asc dan pertama saat memesan desc. Anda dapat mengubah perilaku ini dengan memesan menggunakan nulls first/nulls last .
Dalam kasus khusus Anda, tebakan saya adalah Anda ingin order by rating desc nulls last
, sebagai kebalikan dari perilaku default yang akan menempatkan null terlebih dahulu.