在 oracle sql 视图中显示结果集中的行号列
Show row number column from result set in oracle sql view
我想添加一个额外的列,这样如果我得到,比方说,结果中有 4 行,此列的值将是 1、2、3、4。
我试过 ROWNUM,但由于这是一个视图,它显示了整个视图中的实际行号,这不是我想要的。
这是一个示例架构:
CREATE TABLE TEST (RID NUMBER, RVAL VARCHAR2(100 BYTE));
INSERT INTO TEST (RID, RVAL) VALUES (1, 'ONE');
INSERT INTO TEST (RID, RVAL) VALUES (2, 'TWO');
INSERT INTO TEST (RID, RVAL) VALUES (3, 'THREE');
INSERT INTO TEST (RID, RVAL) VALUES (4, 'FOUR');
CREATE OR REPLACE VIEW VTEST AS
SELECT ROWNUM AS NUMROW, RID, RVAL FROM TEST;
这里有两个示例查询。第一个显示我想要的结果。第二个我想如何得到它(用一个简单的 select 反对视图)
SELECT ROWNUM,RID,RVAL FROM TEST WHERE RID = 3 OR RID = 4;
SELECT * FROM VTEST WHERE RID = 3 OR RID = 4;
这里是fiddle:http://sqlfiddle.com/#!4/4e816/3
在 Oracle 中使用 ROW_NUMBER oracle docs
我想添加一个额外的列,这样如果我得到,比方说,结果中有 4 行,此列的值将是 1、2、3、4。
我试过 ROWNUM,但由于这是一个视图,它显示了整个视图中的实际行号,这不是我想要的。
这是一个示例架构:
CREATE TABLE TEST (RID NUMBER, RVAL VARCHAR2(100 BYTE));
INSERT INTO TEST (RID, RVAL) VALUES (1, 'ONE');
INSERT INTO TEST (RID, RVAL) VALUES (2, 'TWO');
INSERT INTO TEST (RID, RVAL) VALUES (3, 'THREE');
INSERT INTO TEST (RID, RVAL) VALUES (4, 'FOUR');
CREATE OR REPLACE VIEW VTEST AS
SELECT ROWNUM AS NUMROW, RID, RVAL FROM TEST;
这里有两个示例查询。第一个显示我想要的结果。第二个我想如何得到它(用一个简单的 select 反对视图)
SELECT ROWNUM,RID,RVAL FROM TEST WHERE RID = 3 OR RID = 4;
SELECT * FROM VTEST WHERE RID = 3 OR RID = 4;
这里是fiddle:http://sqlfiddle.com/#!4/4e816/3
在 Oracle 中使用 ROW_NUMBER oracle docs