Non sono sicuro di quale sia esattamente il tuo problema o di come "non funzioni", per mancanza di dettagli nella tua domanda. Ma almeno due fattori possono influenzare l'ordinamento in modo tale da ottenere risultati diversi in MySQL e PostgreSQL.
Il primo è collation . In particolare se stai giocando con 9.1 beta. L'ultima volta che ho installato MySQL (che è stato qualche tempo fa, quindi potrebbero averlo risolto da allora), stava raccogliendo le cose come latin-1/swedish per impostazione predefinita, rispetto a utf-8/english per PostgreSQL.
L'altro è nullo. MySQL li colloca sempre per ultimi se la memoria serve. Al contrario, PostgreSQL li colloca costantemente alla fine degli indici btree, e quindi li posiziona per ultimi quando si ordina asc e per primi quando si ordina desc. Puoi modificare questo comportamento ordinando utilizzando nulls first/nulls last .
Nel tuo caso particolare, suppongo che tu voglia order by rating desc nulls last
, al contrario del comportamento predefinito che inserirà prima i valori null.