如何在postgresql中为一个Distinct值取两行?

时间:2016-09-27 07:40:01

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

我想从下表中获得两行不同的column2。

demo_table 
id  | column1 | column2
 1  |    1    |    3
 2  |    2    |    3
 3  |    3    |    4
 4  |    4    |    3
 5  |    5    |    4
 6  |    6    |    3

当我预先形成此查询时

select distinct on (column2) * from demo_table 

它让我把它作为这个

id  | column1 | column2
 5  |    5    |    4
 6  |    6    |    3

我正在寻找可以输出

的查询
id  | column1 | column2
 3  |    3    |    4
 5  |    5    |    4
 6  |    6    |    3
 4  |    4    |    3

它应该给出两行,其中column2是不同的。

1 个答案:

答案 0 :(得分:1)

使用row_number():

select id, column1, column2
from (
  select id, column1, column2, 
         row_number() over (partition by column2 order by id) as rn
  from demo_table
) t 
where rn <= 2;