我要执行联合 List<Select> 喜欢
List<Select>
SELECT #1 UNION SELECT #2 UNION ...
我怎么能和jooq一起做?更新:在我的方法中,我检查一组参数,如果它们不是nul,则将子查询添加到列表中。我需要像字符串连接功能。所以我通过降级到原始sql并使用 Joiner(" UNION ").join(List<String>subqueries)
Joiner(" UNION ").join(List<String>subqueries)
esyap4oy1#
也许下面这些可以用来打电话 union 关于几个 Select s。
union
Select
<T extends Record> Result<T> fetchUnion(List<Select<T>> selects) { return selects.stream() .reduce(Select::union) .map(Select::fetch) .orElseThrow(() -> /* your exception? */); }
请注意,我还没有测试它,您可能需要修改它一点,让它工作。或者:
<T extends Record> Result<T> fetchUnion(Select ... selects) { return Stream.of(selects) .reduce(Select::union) .map(Select::fetch) .orElse ... ; }
一个可能的呼叫可能是:
Result result = fetchUnion(select(T1.A, T1.B).from(T1), select(T2.A, T2.B).from(T2), select(T3.A, T3.B).from(T3));
lukas提到的静态导入在这里也是必需的:
import static org.jooq.impl.DSL.*;
kiz8lqtg2#
干得好:
using(configuration) .select(T1.A, T1.B) .from(T1) .union( select(T2.A, T2.B) .from(T2)) .union( select(T3.A, T3.B) .from(T3)) .fetch();
以上答案假设如下:
2条答案
按热度按时间esyap4oy1#
也许下面这些可以用来打电话
union
关于几个Select
s。请注意,我还没有测试它,您可能需要修改它一点,让它工作。或者:
一个可能的呼叫可能是:
lukas提到的静态导入在这里也是必需的:
kiz8lqtg2#
干得好:
以上答案假设如下: