感觉写得比较繁琐,不知道还有没有跟间接的方法了SQL> select * from temp;        ID DATA
---------- -----
         1 a
         2 b
         3 a
         4 b
         5 aSQL> select a.data,b.id from 
  2  (select  min(rownum) n,data  from (select * from temp order by data) group by data) a,
  3  (select rownum n,id,data from (select * from temp order by data)) b
  4  where b.n=a.n(+);DATA          ID
----- ----------
a              1
               3
               5
b              2
               4SQL>