Postgres根据时间戳选择distinct

时间:2016-06-20 08:15:17

标签: sql postgresql greatest-n-per-group

我有一个包含两列a和b的表,其中a是ID,b是时间戳。 我需要选择所有不同的a,但我只关心每个ID的最新行。

即。我需要一种方法来选择不同的a条件b值。

有没有办法在postgres中使用DISTINCT ON?

干杯

1 个答案:

答案 0 :(得分:3)

像@a_horse_with_no_name建议的那样,解决方案是

SELECT DISTINCT ON (a) a, b FROM the_table ORDER BY a, b DESC

正如the manual所说,

  

请注意,除非查询,否则集合的“第一行”是不可预测的   按足够的列排序,以保证行的唯一排序   到达DISTINCT过滤器。 (DISTINCT ON处理之后发生   ORDER BY排序。)