MySQL totalmente não compatível com os padrões
GROUP BY pode ser emulado pelo DISTINCT ON do Postgres . Considere isto:MySQL:
SELECT a,b,c,d,e FROM table GROUP BY a
Isso fornece 1 linha por valor de
a (qual, você realmente não sabe). Bem, na verdade, você pode adivinhar, porque o MySQL não sabe sobre agregados de hash, então provavelmente usará uma classificação ... mas apenas classificará em a , então a ordem das linhas pode ser aleatória. A menos que use um índice de várias colunas em vez de classificação. Bem, de qualquer forma, não é especificado pela consulta. Postgres:
SELECT DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c
Isso fornece 1 linha por valor de
a , esta linha será a primeira na classificação de acordo com o ORDER BY especificado pela consulta. Simples. Observe que aqui, não é um agregado que estou computando. Então
GROUP BY na verdade não faz sentido. DISTINCT ON faz muito mais sentido. Rails é casado com MySQL, então não estou surpreso que ele gere SQL que não funciona no Postgres.