小编rku*_*dva的帖子

带有多个选择的联合查询发布 java 8

这是我想在 MySQL 中尝试的查询

SELECT A.x
FROM A
WHERE A.y = 'P'
UNION
SELECT A.x
FROM A
WHERE A.y = 'Q'
Run Code Online (Sandbox Code Playgroud)

以上是我正在尝试的原始查询的简化版本。在我的原始查询中,每个SELECT语句都涉及多个表INNER JOIN

如果我需要查询的表 'A' 的 'y' 列中可能的值数是 'n',那么我的查询将涉及对 'n'SELECT语句执行 'n-1' 联合

我知道 JOOQ 可以合并多个SELECT语句。但是有没有一个很好的方法来做这个 Java 8 风格的帖子?也许使用 Steam.collect()?

这就是我所拥有的,但想知道我是否可以做得更好

String firstValueToQuery = valuesToQuery.get(0);
Select<Record5<UUID, UUID, String, Integer, String>> selectQuery =  getSelectQueryForValue(firstValueToQuery);
valuesToQuery.stream()
             .skip(1)
             .forEach(valueToQuery -> selectQuery.unionAll(getSelectQueryForValue(valueToQuery)));
selectQuery.fetchStream();
Run Code Online (Sandbox Code Playgroud)

这是我的实施方式 getSelectQueryForValue

private Select<Record5<UUID, UUID, String, Integer, String>> getSelectQueryForValue(String valueToQuery) {
        return jooq.select(
                A.P,
                A.Q,
                A.R, …
Run Code Online (Sandbox Code Playgroud)

java mysql jooq java-stream

4
推荐指数
1
解决办法
695
查看次数

标签 统计

java ×1

java-stream ×1

jooq ×1

mysql ×1