【发布时间】:2019-10-26 00:51:59
【问题描述】:
在我们的项目中,我们使用了两个数据库,一个是 postgres,一个是 mssql。我们使用 Jooq 来查询这些数据库,而使用 postgres 一切都非常简单!
但是使用 mssql 我们面临一些麻烦。任务是选择前 10 个值,假设我们有以下 java 代码:
DSL.using(conn)
.select(USE_CASE.asterisk())
.from(USE_CASE)
.where(USE_CASE.RECORD_ACTIVE.eq(true))
.orderBy(USE_CASE.CREATED_ON.desc())
.limit(10)
.offset(0)
.fetch(new UseCaseMapper()))
这就像 postgres 的魅力,但在 mssql 上我们得到以下错误:
Execution exception[[CompletionException: org.jooq.exception.DataAccessException:
SQL [select "park"."dbo"."use_case".* from "park"."dbo"."use_case" where
"park"."dbo"."use_case"."record_active" = ?
order by "park"."dbo"."use_case"."created_on" desc limit ?];
Incorrect syntax near 'limit'.]]
我知道对于 mssql,等效查询类似于,
select top 10 *
from use_case
where record_active = true
order by created_on desc;
如何更改我的 java 代码以获取 mssql 中的限制记录?
【问题讨论】:
标签: sql-server postgresql jooq