java JOOQ Select查询中的Select计数
将以下语句转换为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子句添加到count子查询的方法时失败了
数据库是PostgreSQL 9.6
# 1 楼答案
卢卡斯建议使用^{} 是更好的解决方案,因为它保留了
<T>
类型更多类型安全版本:
我的第一个(不太安全的)解决方案:
也许有一个更优雅的解决方案,但它是有效的。生成的查询看起来像我的原始查询
# 2 楼答案
下面是另一个使用
DSL.field(...)
的例子:结果集将包含一个名为
total
的列,该列将被视为类型java.lang.Integer
。这适用于PostgreSQL 9.6关于
COUNT(*) OVER ()
的详细描述可以在这里找到:here