GROUP BYPostgres可以模拟完全不符合MySQL标准的MySQL
DISTINCT ON。考虑一下:
MySQL:
SELECt a,b,c,d,e FROM table GROUP BY a
每个值传送1行
a(您实际上并不知道该行)。好的,实际上您可以猜测,因为MySQL不了解哈希聚合,因此它可能会使用sort
…,但只会排序
a,因此行的顺序可以是随机的。除非它使用多列索引而不是排序。好吧,无论如何,它不是由查询指定的。
Postgres:
SELECt DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c
这样,每个值传送1行
a,该行将是根据
ORDER BY查询指定的排序中的第一行。简单。
请注意,这里不是我正在计算的汇总。所以
GROUP BY实际上没有任何意义。
DISTINCT ON更有意义。
Rails已与MySQL结为夫妻,因此对于它生成的SQL在Postgres中不起作用,我并不感到惊讶。



