sql - 限制从 oracle 和 postgres 中的查询返回的行数

标签 sql oracle postgresql jpa

我正在使用 JPA Criteria API,我有一个要求,我必须使用 UNION 子句,并且由于 JPA 不支持集合操作,我必须创建一个 native sql 查询.

在此查询中,我必须使用 JPA Criteria API 限制返回的行数,这是按以下方式完成的:

typedQuery.setFirstResult(gridParams.getStartRow());
typedQuery.setMaxResults(gridParams.getEndRow() - Math.max(0, gridParams.getStartRow()));

我们的应用程序同时在 Oracle 12c 和 Postgres 中运行,所以我面临的问题是 Oracle 和 Postgres 使用不同的语法来限制结果。

我该如何解决这个问题?

最佳答案

两个数据库系统都支持 ANSI 标准fetch first:

select *
from some_table
order by something
OFFSET 10 ROWS
FETCH FIRST 10 ROWS ONLY;

Oracle 从 12.1 开始支持它

关于sql - 限制从 oracle 和 postgres 中的查询返回的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49628610/

相关文章:

Oracle 高级队列 - 订阅者消息跟踪

java - 使用 ID 而不是 DATE 列有什么缺点吗?

postgresql - 一个 JOIN 比两个相同的 SELECT 慢

sql - 免费提供的分层信息示例数据集和真实名称

mysql - 如何按所选顺序选择具有最小开始日期和最大结束日期的所有工作人员?

删除 XML 中的属性的 SQL 查询

oracle - 在 Windows XP 上对 Oracle 10G 进行基准测试

postgresql - 将 COUNT 集成到 postgres 查询中

mysql - SQL 计数来自其他表的调用

sql - PostgreSQL:使用动态名称联合多个表