java - 如何在 jOOQ 中生成带有 LIMIT 子句但没有 OFFSET 子句的 SQL 语句?

标签 java sql postgresql jooq

我正在尝试使用 jOOQ 生成以下 SQL 语句:

SELECT id, name
FROM students
ORDER BY id DESC
LIMIT 50;

使用 jOOQ 生成上述语句:

String sql = DSL.using(SQLDialect.POSTGRES).select(
  field("id"),
  field("name"))
  .from("students")
  .orderBy(field("id").desc())
  .limit(inline(50))
  .getSQL();

但我得到以下信息:

select id, name from students order by id desc limit 50 offset ?

如何删除 OFFSET 子句?我知道我可以将偏移值指定为 0,这与省略 OFFSET 子句相同,但我想知道我是否可以从生成的 SQL 语句中完全删除它。

谢谢。

最佳答案

你是对的,jOOQ 3.4.2 目前为 PostgreSQL 呈现了一个 OFFSET 子句,无论它是否由用户通过 API 指定。这可能可以改进。我创建了问题 #3577为此。

目前,在这种情况下并没有真正“简单”的方法来更改生成的 SQL。您可能正在实现 ExecuteListener ,并修补生成的 SQL - 但您还必须摆脱绑定(bind)值。

关于java - 如何在 jOOQ 中生成带有 LIMIT 子句但没有 OFFSET 子句的 SQL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438777/

相关文章:

java - 尝试在 canvas textureview android 上绘制时出现空指针异常?

mysql - SQL 如何将: from two tables that has 2 same data in other named columns,其中一个需要统计

postgresql - aiopg/psycopg2 自动提交和事务

regex - PostgreSQL - 使用 regexp_split_to_table 将单词 (len>1) 拆分为行

sql - dplyr 中是否可以使用 cut() 样式分箱?

postgresql - 删除对象的权限被拒绝

java - 使用 TreeMap 中某些内容的类方法

java - 根据 XSD 验证完整的 XML

java - Java孤儿案

mysql - 使用自定义 ORDER BY 数据的 SQL 选择