Postgres SELECT DISTINCT,只有最高值

Joh*_*ith 5 sql postgresql

我使用以下pgsql查询来选择index_id并在级别列上进行不同的查询.

SELECT DISTINCT ON (level) index_id FROM indexes 
Run Code Online (Sandbox Code Playgroud)

虽然它的工作正在index_id为每个级别返回第一个,但我希望index_id在每个不同的级别中获得最高级别

Clo*_*eto 8

使用order by获得最大index_id的

SELECT DISTINCT ON (level) index_id 
FROM indexes 
order by level, index_id desc
Run Code Online (Sandbox Code Playgroud)


val*_*lex 6

尝试使用 GROUP BY 而不是 DISTINCT ON

SELECT MAX(index_id)  FROM indexes GROUP BY level
Run Code Online (Sandbox Code Playgroud)

  • 哪个更快:DISTINCT ON 或 MAX + GROUP BY? (2认同)