MySQL zcela nevyhovující standardům GROUP BY lze emulovat Postgres' DISTINCT ON . Zvažte toto:
MySQL:
SELECT a,b,c,d,e FROM table GROUP BY a
To poskytuje 1 řádek na hodnotu a (který, to vlastně nevíte). Vlastně můžete hádat, protože MySQL nezná hashovací agregáty, takže pravděpodobně použije řazení... ale bude třídit pouze na a , takže pořadí řádků může být náhodné. Pokud nepoužívá místo řazení vícesloupcový index. No, každopádně to není specifikováno dotazem.
Postgres:
SELECT DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c
To poskytuje 1 řádek na hodnotu a , tento řádek bude první v řazení podle ORDER BY specifikované dotazem. Jednoduché.
Všimněte si, že zde nejde o agregát, který počítám. Takže GROUP BY vlastně nedává smysl. DISTINCT ON dává mnohem větší smysl.
Rails je ženatý s MySQL, takže mě nepřekvapuje, že generuje SQL, který v Postgresu nefunguje.