sql - Oracle LIMIT 和 1000 列限制

标签 sql oracle pagination

我有一个如下所示的 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 对每个表或 View 有 1000 列的内部限制,显然我用来限制结果集的包装 SQL 正在创建应用此限制的临时 View ,导致整个事情失败。

是否有另一种分页方法不会创建这样的 View ,或者不会受到 1000 列限制的影响?

我对将工作分成 block 、不选择 > 1000 列等的建议不感兴趣,因为我已经完全了解所有这些方法。

最佳答案

好吧,这会比你计划的更糟糕,但我的意思是你可以尝试这样分页:

WITH CTE AS
(
    ... original SQL goes here ...
)

SELECT A.*
FROM CTE A
INNER JOIN (SELECT  YourKey,
                    ROW_NUMBER() OVER (ORDER BY ...) rnum
            FROM CTE) B
ON A.YourKey = B.YourKey
WHERE rnum BETWEEN 1 AND 10;

关于sql - Oracle LIMIT 和 1000 列限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13314868/

相关文章:

mysql - 基于一列访问两行,但也访问这些行的其他列

oracle - 将 Blob 转换为 Clob

database - Oracle Number(18) 可以存储多少范围?

mysql - 如何从具有多个匹配值的 JOIN 的表中进行 SELECT?

sql - CREATE AS SELECT * 但使用从另一个表获取的一列

mysql - 每 24 小时安排一次 MySQL 查询;查询表并将结果存储在另一个表中

gwt - 在数据的顶部和底部显示 SimplePager 分页菜单

java - JPA 和 ORACLE 函数 : error when call a stored procedure using NamedNativeQuery

php - 用页码分页?

laravel - 为什么 Pagination laravel 会忽略请求 - skip, take