【发布时间】:2021-08-17 02:46:51
【问题描述】:
SELECT DISTINCT ON (some_col)
*
FROM my_table
我想知道这是否有效并且会按预期工作。意思是,这是否会根据不同的some_col 返回 my_table 中的所有列?我已经阅读了 Postgres 文档,看不出有任何理由说明这个 不会 按预期工作,但是在 SO 上阅读了 old cmets,其中指出在使用 distinct 时需要明确列出列开。
我知道明确列出列是最佳做法,并且在执行上述操作时也使用 order by。
您可能不需要或不关心的背景
对于背景和我问的原因,我们正在从 MySQL 迁移到 Postgres。 MySQL 有一个非常不符合标准的“技巧”,它允许SELECT * ... GROUP BY 允许基于group by 轻松select *。以前关于将这种不符合标准的技巧迁移到 Postgres 的答案和 cmets 充其量是模糊的。
【问题讨论】:
-
这是有效的语法,但没有
order by的distinct on ()几乎没有意义
标签: sql postgresql greatest-n-per-group postgresql-13 distinct-on