如何在sql查询结果中创建临时序列列?
我有一张像这样的桌子如何在sql查询结果中创建临时序列列?,sql,oracle,Sql,Oracle,我有一张像这样的桌子 NAME AGE james 22 ames 12 messi 32 .... .... 我可以使用从emp中选择姓名、年龄查询此表 现在我想要的是在name之前有一个额外的列,如果查询返回N行,那么这个列将是1,2,3..N SEQUENCE NAME AGE 1 james 22 2 ames 12 3 messi 32 4 .... .... 我怎样才能做到这一点?你可以试试 Select R
NAME AGE
james 22
ames 12
messi 32
....
....
我可以使用从emp中选择姓名、年龄查询此表代码>
现在我想要的是在name之前有一个额外的列,如果查询返回N行,那么这个列将是1,2,3..N
SEQUENCE NAME AGE
1 james 22
2 ames 12
3 messi 32
4 ....
....
我怎样才能做到这一点?你可以试试
Select ROWNUM sequence, name , age from emp;
对于查询返回的每一行,ROWNUM伪列返回一个数字,该数字指示Oracle从表或一组连接行中选择该行的顺序。选定的第一行的ROWNUM为1,第二行的ROWNUM为2,依此类推。如果您只想添加一列,该列将在显示时包含序号(而不是实际将该数据存储在表中),则可以使用ROWNUM
伪列或row\u 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
pseudocolumn。结果也按名称排序
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
我对甲骨文知之甚少。但要得到行号真的很简单!但是,当使用rownum处理应该排序的结果时,或者当您对它们有条件时,请务必小心。第一种解决方案的优点是可以跨多种DBMSI进行移植,而不是第二种方法。heximal编写了更简单的查询,使用rownum@Thinker子查询为我们提供一组有序的(按名称列)数据。然后,外部查询使用rownum
对有序数据集进行编号。如果您不想要有序的结果集,可以用表名替换子查询。但是如果没有排序,例如rownum 1可以被分配给oracle决定首先选择的任何行。我找不到row_number()函数,mysql也无法识别这个函数。在这种情况下我能做什么。你想让结果集有序吗?不,没有这样的条件。