在表的特定分区上执行选择查询的正确方法是什么。例如,我有一个在特定列上进行范围分区的员工表。
目前我这样做:
Result<Record> fetch = DSL.using(configuration())
.select()
.from(EMPLOYEES)
.fetch();
执行以下sql的正确方法是什么(其中p2是分区)
SELECT * FROM employees PARTITION (p2);
更新1 当我使用可更新记录时,更新/插入怎么样,例如:
employeeRecord.attach(configuration())
employeeRecord.update(); // or insert
我假设我可以做类似这样的事情,但那会处理乐观的锁定案例(我通过我桌子上的版本列使用)
DSL.using(configuration())
.update("{0} partition (p2)", EMPLOYEES)
.set(EMPLOYEES.NAME, "abc")
.where(EMPLOYEES.ID.eq(123))
.execute();
答案 0 :(得分:2)
jOOQ目前不支持表格上的PARTITION
条款。相关功能请求为:https://github.com/jOOQ/jOOQ/issues/2774
您可以使用纯SQL模板API轻松解决此限制: https://www.jooq.org/doc/latest/manual/sql-building/plain-sql-templating
Result<Record> fetch = DSL.using(configuration())
.select()
.from("{0} partition (p2)", EMPLOYEES)
.fetch();
以上是方便:
Result<Record> fetch = DSL.using(configuration())
.select()
.from(DSL.table("{0} partition (p2)", EMPLOYEES))
.fetch();
答案 1 :(得分:0)
您是否尝试过这里的示例,例如
create.select(t.BOOKED_AT, t.AMOUNT,
sum(t.AMOUNT).over().partitionByOne()
.orderBy(t.BOOKED_AT)
https://www.jooq.org/doc/3.0/manual/sql-building/column-expressions/window-functions/