84
votes

In Oracle, it's possible to do a SELECT statement that returns the row number as a column in your result set.

For example,

SELECT rownum, column1, column2 FROM table

returns:

rownum       column1       column2
1            Joe           Smith
2            Bob           Jones

But I don't want to specify each column by hand. I want to do something like:

select rownum,* from table
rownum       column1       column2       column3       column4
1            Joe           Smith         1             2
2            Bob           Jones         3             4

Any ideas?

4

4 Answers

145
votes

Qualify the * with the name of the table:

select rownum, table.* from table
8
votes

Dave's answer is great, i'd just like to add that it's also possible to do that by placing the wildcard as the first column:

select *,rownum from table

Works, but the following won't:

select rownum,* from table

I've tested on MySQL.

0
votes

Dave's answer did not work for me on Oracle 11g (table.* without alias). The following worked:

select rownum, t.* from table t
-10
votes

Unfortuantely, i dont think therei s a way to do it, easiest is probably inner join with itself with an inline table of id,count(*), and put an outer select statement