如何在我的sql查询结果中创建临时序列列?

时间:2012-10-27 12:01:35

标签: sql oracle

我有一张看起来像这样的表。

NAME    AGE
james   22
ames    12
messi   32
....
....

我可以使用Select name, age from emp;

查询此表

现在我想要的是在name之前有一个额外的列,如果查询返回n行,它将是1,2,3..N。

SEQUENCE    NAME    AGE
1    james  22
2    ames   12
3    messi  32
4    ....
    ....

我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

如果您只想在显示时添加一个包含序列号的列(实际上并未将该数据存储在表中),您可以使用ROWNUM伪列或row_number()分析函数。

select row_number() over(order by name) seq
     , name
     , age
  from your_table

      SEQ NAME               AGE
---------- ----------- ----------
         1 ames                12
         2 james               22
         3 messi               32

上述查询的输出按NAME排序,但您可以按所需的任何列或列组合排序。

第二种方法是使用rownum伪列。结果按name排序

 select rownum seq
      , name
      , age
   from ( select name
               , age
           from your_table
          order by name
         )



       SEQ NAME               AGE
---------- ----------- ----------
         1 ames                12
         2 james               22
         3 messi               32

答案 1 :(得分:1)

你可以尝试

Select ROWNUM sequence, name , age from emp;

对于查询返回的每一行,ROWNUM伪列返回一个数字,表示Oracle从一个表或一组连接行中选择行的顺序。选择的第一行的ROWNUM为1,第二行为2,依此类推。