有这样的要求
select * from
(select * from
(select a.*, rownum rnum from
(select * from dimax)a)
where rownum <= 5)
where rnum > 2
就地dimax的表总是不同的,也就是说,我有一百个表,它们的列不同,不知道我将在查询中使用哪个表。一切都会正常工作,但其中一个表可能与 rownum 别名匹配,然后查询将失败。如何解决这个问题并在未知表中选择所需的行?
有这样的要求
select * from
(select * from
(select a.*, rownum rnum from
(select * from dimax)a)
where rownum <= 5)
where rnum > 2
就地dimax的表总是不同的,也就是说,我有一百个表,它们的列不同,不知道我将在查询中使用哪个表。一切都会正常工作,但其中一个表可能与 rownum 别名匹配,然后查询将失败。如何解决这个问题并在未知表中选择所需的行?
如果使用 Oracle 12 及更高版本,则可以使用OFFSET 和 FETCH:
ORDER BY需要,否则行的顺序将是任意的。在旧版本中,您可以这样做:
此请求与您的请求没有根本不同,如果有
dimaxcolumnrn,则该请求将不起作用。我不知道如何解决这个问题。或者,您可以添加某种预处理,或者简单地选择一个未出现在任何表中的名称:请参阅英文类似问题中的其他选项:Paging with Oracle