使用 rownum 表示我拉回了哪些行
Use rownum to indicate what rows I have pulled back
我有 table 个人,有名字和姓氏。
firstname
lastname
a
a
b
b
c
c
d
d
e
e
f
f
g
g
h
h
i
i
j
j
我想从一个特定的点查询。例如。
SELECT FIRSTNAME, LASTNAME WHERE FIRSTNAME > 'e' order by firstname, lastname
太棒了。但我真正想要的是结果告诉我结果实际上来自第 6 行。我试过了
SELECT FIRSTNAME, LASTNAME, ROW_NUMBER(OVER ORDER BY lastname) WHERE FIRSTNAME > 'e' order by firstname, lastname
但在那种情况下,row_number 将从 1 开始,当我希望它告诉我这实际上是查询中的第 6 个元素时
SELECT FIRSTNAME, LASTNAME order by firstname, lastname
我想在不实际检索前五行的情况下执行此操作。
谢谢
您可以使用子查询来枚举行,然后在外部查询中进行过滤:
select *
from (
select firstname, lastname, row_number() over(order by firstname, lastname) as rn
from mytable
) t
where firstname > 'e'
order by firstname, lastname
您可以使用子查询:
SELECT FIRSTNAME, LASTNAME, seqnum
FROM (SELECT e.*, ROW_NUMBER() OVER (ORDER BY firstname) as seqnum
FROM e
) e
WHERE FIRSTNAME > 'e'
ORDER BY firstname, lastname
您可以在 SQL 末尾使用 OFFSET
和 FETCH
子句来告诉 Oracle 您想要哪一行。
在你的例子中,你想要第 6 行,所以它将是:
SELECT firstname, lastname
FROM mytable
ORDER BY firstname, lastname
-- Skip the first 5 rows and get me the next one (i.e., the 6th one)
OFFSET 5 ROWS FETCH NEXT 1 ROW ONLY;
在执行方面,这基本上与已发布的其他答案做同样的事情。它只是让开发人员的意图更加明确,imo。
我有 table 个人,有名字和姓氏。
firstname | lastname |
---|---|
a | a |
b | b |
c | c |
d | d |
e | e |
f | f |
g | g |
h | h |
i | i |
j | j |
我想从一个特定的点查询。例如。
SELECT FIRSTNAME, LASTNAME WHERE FIRSTNAME > 'e' order by firstname, lastname
太棒了。但我真正想要的是结果告诉我结果实际上来自第 6 行。我试过了
SELECT FIRSTNAME, LASTNAME, ROW_NUMBER(OVER ORDER BY lastname) WHERE FIRSTNAME > 'e' order by firstname, lastname
但在那种情况下,row_number 将从 1 开始,当我希望它告诉我这实际上是查询中的第 6 个元素时
SELECT FIRSTNAME, LASTNAME order by firstname, lastname
我想在不实际检索前五行的情况下执行此操作。
谢谢
您可以使用子查询来枚举行,然后在外部查询中进行过滤:
select *
from (
select firstname, lastname, row_number() over(order by firstname, lastname) as rn
from mytable
) t
where firstname > 'e'
order by firstname, lastname
您可以使用子查询:
SELECT FIRSTNAME, LASTNAME, seqnum
FROM (SELECT e.*, ROW_NUMBER() OVER (ORDER BY firstname) as seqnum
FROM e
) e
WHERE FIRSTNAME > 'e'
ORDER BY firstname, lastname
您可以在 SQL 末尾使用 OFFSET
和 FETCH
子句来告诉 Oracle 您想要哪一行。
在你的例子中,你想要第 6 行,所以它将是:
SELECT firstname, lastname
FROM mytable
ORDER BY firstname, lastname
-- Skip the first 5 rows and get me the next one (i.e., the 6th one)
OFFSET 5 ROWS FETCH NEXT 1 ROW ONLY;
在执行方面,这基本上与已发布的其他答案做同样的事情。它只是让开发人员的意图更加明确,imo。