Thread: How to realize ROW_NUMBER() in 8.3?
Hello, ROW_NUMBER() is only ready in 8.4. For 8.3, is there a simple way to get row_number select row_number(), col1, col2... FROM tableName Thanks a lot! Ding Ye
On Apr 20, 2011, at 9:15 PM, Emi Lu wrote: > ROW_NUMBER() is only ready in 8.4. For 8.3, is there a simple way to get row_number > select row_number(), col1, col2... > FROM tableName Following is a link of deepsz which has a way of implementation of rownum. http://www.depesz.com/index.php/2007/08/17/rownum-anyone-cumulative-sum-in-one-query/ Thanks & Regards, Vibhor Kumar EnterpriseDB Corporation The Enterprise PostgreSQL Company vibhor.kumar@enterprisedb.com Blog:http://vibhork.blogspot.com
If your table is not terribly big, you can try something like SELECT a.col1,a.col2, COUNT(*) as row_number FROM yourTable a,yourTable b WHERE a.col1 >= b.col1 -- I'm assuming col1 is primary key GROUP BY a.col1,a.col2 ORDER BY row_number This is pure SQL, should work in every version... Best, Oliveiros ----- Original Message ----- From: "Emi Lu" <emilu@encs.concordia.ca> To: <pgsql-sql@postgresql.org> Sent: Wednesday, April 20, 2011 4:45 PM Subject: [SQL] How to realize ROW_NUMBER() in 8.3? > Hello, > > ROW_NUMBER() is only ready in 8.4. For 8.3, is there a simple way to get > row_number > > select row_number(), col1, col2... > FROM tableName > > Thanks a lot! > > Ding Ye > > -- > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-sql
Thank you for the info. I found a simple way: ========================== [1] create SEQUENCE tmp start 7820; [2] insert into desti_table_name select nextval('tmp'), c1, c2... ... cN from t1 left join t2... ... tn where ... ... Just for people using 8.3, this is mimic row_number. Emi > If your table is not terribly big, you can > try something like > > SELECT a.col1,a.col2, COUNT(*) as row_number > FROM yourTable a,yourTable b > WHERE a.col1 >= b.col1 -- I'm assuming col1 is primary key > GROUP BY a.col1,a.col2 > ORDER BY row_number > > This is pure SQL, should work in every version... > > Best, > Oliveiros > > ----- Original Message ----- From: "Emi Lu" <emilu@encs.concordia.ca> > To: <pgsql-sql@postgresql.org> > Sent: Wednesday, April 20, 2011 4:45 PM > Subject: [SQL] How to realize ROW_NUMBER() in 8.3? > > >> Hello, >> >> ROW_NUMBER() is only ready in 8.4. For 8.3, is there a simple way to >> get row_number >> >> select row_number(), col1, col2... >> FROM tableName >> >> Thanks a lot! >> >> Ding Ye >> >> -- >> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgsql-sql > -- Emi Lu, ENCS, Concordia University, Montreal H3G 1M8 emilu@encs.concordia.ca +1 514 848-2424 x5884
Emi Lu <emilu@encs.concordia.ca> wrote: > Thank you for the info. > > I found a simple way: > ========================== > [1] create SEQUENCE tmp start 7820; > [2] > insert into desti_table_name > select nextval('tmp'), > c1, c2... ... cN > from t1 left join t2... ... tn > where ... ... > > Just for people using 8.3, this is mimic row_number. Not really... you have to reset the sequence after the select, and i'm not sure about ordering the result. Andreas -- Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect. (Linus Torvalds) "If I was god, I would recompile penguin with --enable-fly." (unknown) Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°