You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jOOQ中对数字参数指定的列实现降序排序?

解决方案

要实现按第1列和第3列降序排序,你可以通过以下两种方式修改orderBy部分:

方法1:使用field()指定位置并调用desc()

直接通过field(int)获取对应位置的字段,再调用desc()方法设置降序:

.orderBy(field(1).desc(), field(3).desc())

方法2:使用DSL.sort()指定排序规则(jOOQ 3.11+支持)

通过DSL.sort()方法同时指定列位置和排序方向:

.orderBy(DSL.sort(1, SortOrder.DESC), DSL.sort(3, SortOrder.DESC))

修改后的完整代码

Predictions p = PREDICTIONS.as("p");
Banks b = BANKS.as("b");

List<Prediction> list = context
        .select(inline(1).as("SELECTED"), p.EXEC_ID, p.DATASET_NAME, p.DATE_TIME)
        .from(p)
        .join(b)
        .on(b.SK.eq(p.BANK_SK))
        .where(p.EXEC_ID.in(execIds))
        .unionAll(context
                .select(inline(0).as("SELECTED"), p.EXEC_ID, p.DATASET_NAME, p.DATE_TIME)
                .from(p)
                .join(b)
                .on(b.SK.eq(p.BANK_SK))
                .where(p.EXEC_ID.notIn(execIds)))
        .orderBy(field(1).desc(), field(3).desc()) // 替换为上述任意一种写法即可
        .fetch()
        .into(Prediction.class);

说明:原代码里的orderBy(1,3)用的是按列位置默认升序的重载方法,没法直接指定排序方向;以上两种写法都能为每个目标列单独设置降序规则,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者ps0604

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:02:17