SELECT DISTINCT ON (some_col)
*
FROM my_table
我想知道这是否有效并且会按预期工作。意思是,这会返回 my_table 中的所有列,基于 distinctsome_col
吗?我已经阅读了 Postgres 文档,看不出有什么理由不能按预期工作,但是在这里阅读了关于 SO 的旧评论,其中指出在使用 distinct on 时需要明确列出列。
我知道最好的做法是明确列出列,并在执行上述操作时使用 order by。
您可能不需要或不关心的背景
对于背景和我问的原因,我们正在从 MySQL 迁移到 Postgres。MySQL 有一个非常不符合标准的“技巧”,SELECT * ... GROUP BY
它允许一个轻松地select *
基于group by
. 以前关于将这种不符合标准的技巧迁移到 Postgres 的答案和评论充其量是模糊的。