在MySQL中,我想执行这样的查询
SELECT MIN(id) FROM table;
Run Code Online (Sandbox Code Playgroud)
我越了解JOOQ语法和聚合函数,就会感到困惑。
我以为这样的事情会起作用
select( EVENT.EVENTID , min() ).from( EVENT ).fetch();
or
Result<Integer> er = context.select( EVENT.EVENTID.min()).fetch();
Run Code Online (Sandbox Code Playgroud)
我尝试通过选择整个第一条记录来解决问题
Result<EventRecord> er2 = context.selectFrom(EVENT).orderBy(EVENT.EVENTID.asc()).limit(1).fetch();
Run Code Online (Sandbox Code Playgroud)
如果结果的大小为0,则说明一条记录不存在,但是如果结果不为0,则得到正确的记录。我想使用min()函数,但是语法不正确。
您要在SQL中编写的查询是以下查询:
SELECT MIN(event.eventid) FROM event
Run Code Online (Sandbox Code Playgroud)
这就是为什么您的两次尝试都无效的原因
// 1. You cannot combine single columns with aggregate functions in SQL,
// unless you're grouping by those columns
// 2. You didn't pass any cargument column to the MIN() function
context.select( EVENT.EVENTID , min() ).from( EVENT ).fetch();
// 3. This doesn't specify any FROM clause, so your database won't know what
// table you want to select the MIN(eventid) from
context.select( EVENT.EVENTID.min()).fetch();
Run Code Online (Sandbox Code Playgroud)
请注意,这些想法并非特定于jOOQ,它们通常与SQL有关。使用jOOQ时,请始终考虑要首先表达的SQL语句(我的答案顶部的那个)。因此,您的jOOQ语句将类似于以下任何一种:
// "Postfix notation" for MIN()
context.select(EVENT.EVENTID.min()).from(EVENT).fetch();
// "Prefix notation" for MIN(), where min() is static-imported from
// org.jooq.impl.DSL
context.select(min(EVENT.EVENTID)).from(EVENT).fetch();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3867 次 |
| 最近记录: |