在我们的项目中,我们使用了两个数据库,一个是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中的限制记录?
https://stackoverflow.com/questions/56546414
复制相似问题