2

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

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    ....
    ....

我怎么能做到这一点?

4

2 回答 2

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
于 2012-10-27T12:24:30.383 回答
1

你可以试试

Select ROWNUM sequence, name , age from emp;

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

于 2012-10-27T12:03:53.700 回答