我有一张看起来像这样的表。
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 ....
....
我怎么能这样做?
答案 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,依此类推。