知りたい内容はこちらのものと変わらないですよね?
https://teratail.com/questions/20240
私もanonymouskawaさんと同意見で、SQL一回で事が済むと考えてますが
SQL二回実行して結果をマージするのでしたら以下のようになるかと思います。
※MapのKeyにはテーブルのカラム名、Valueには対象値が入る想定です。
Java
1List<Map<String, String>> mapList1 = SQL実行結果1;
2List<Map<String, String>> mapList2 = SQL実行結果2; // SQL実行結果1の内容一部も取得される?
3List<String> valueList = new ArrayList<String>(); // 主キー項目の値を保持するリスト
4if (mapList2 != null && mapList2.size() > 0) { // SQL実行結果2が空以外の場合
5 for (Map<String, String> m : mapList1) {
6 valueList.add(m.get("主キーのカラム名")); // 主キーの値を保持
7 }
8}
9for (Map<String, String> m : mapList2) {
10 String s = m.get("主キーのカラム名");
11 if (!valueList.contains(s)) { // SQL実行結果1の主キーの値を保持したリストに存在しなかった場合
12 mapList1.add(m);
13 }
14}
間違ってたらすみません。
hiroki8080さんの回答にもありますように
②の結果に①の結果と重複するレコードが存在しない場合はaddAllで追加できます。