我有一个如下所示的 SQL 查询:
SELECT foo "c0",
bar "c1",
baz "c2",
...
FROM some_table
WHERE ...
为了应用限制,并且只返回来自该查询的记录子集,我使用以下包装 SQL:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ...) rnum
FROM (
... original SQL goes here ...
) t
)
WHERE rnum BETWEEN 1 AND 10
我的问题是原始查询在与其他表的大量连接中选择了超过 1000 列。Oracle 对每个表或视图有 1000 列的内部限制,显然我用来限制结果集的包装 SQL 正在创建一个应用此限制的临时视图,导致整个事情失败。
是否有另一种分页方法不会创建这样的视图,或者不会受到 1000 列限制的影响?
我对将工作分解成块的建议不感兴趣,而不是选择 > 1000 列等,因为我已经完全了解所有这些方法。