¿Cómo puedo tomar dos filas para un valor Distinto en postgresql?

Quiero get dos filas de columna2 distintas de la siguiente tabla.

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

Cuando realizo esta consulta

 select distinct on (column2) * from demo_table 

me da por puesto puesto como este

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

Estoy buscando una consulta donde pueda get resultados como

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

debería dar dos filas donde column2 es distinta.

Use row_number () para eso:

 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;