将以下语句转换为时遇到问题jooq API
:
SELECT t1.col1, t1.col2, t1.col3, (SELECT count(*) FROM table2 where table2.col2 = t1.col1)
FROM table1 t1
我试过DSL.count()
和DSL.selectCount()
,但我失败了,而搜索的方式来where子句添加到计数子查询。
数据库是 PostgreSQL 9.6。
Lukas 建议使用DSL.field
是更好的解决方案,因为它保留了<T>
类型。
更多类型安全版本:
TableField<Table1Record, Long> col1 = TABLE1.COL1;
Field<Integer> count = DSL.field(DSL.selectCount().from(TABLE2).where(TABLE2.COL2.eq(col1)));
using(configuration).select(col1, count).from(TABLE1).fetch();
我的第一个(不太安全的)解决方案:
TableField<Table1Record, Long> col1 = TABLE1.COL1;
Field count = DSL.selectCount().from(TABLE2).where(TABLE2.COL2.eq(col1)).asField("count");
using(configuration).select(col1, count).from(TABLE1).fetch();
也许有一个更优雅的解决方案,但它有效。生成的查询看起来像我的原始查询。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句