ある種の Java 配列またはシリアル番号のコレクションがあるように聞こえますが、これらの番号が DB2 テーブルにあるかどうかを確認したい場合や、リスト全体を一度に実行したい場合があります。一度に1つ以上。いい考え。
したがって、対応するシリアルがテーブルにないことを示す null を使用して、テーブルへの左結合を実行できる一連の行が必要です。このアプローチを使用するために、いくつかの回答が開始されました。しかし、彼らはあなたの行番号を返しておらず、SELECT UNION を使用しています。
VALUES 句
FROM 句は
、correlation-clause を持つ(全選択)である「nested-table-expression」
にすることができます。(全選択) は、今度は VALUES 文節にすることができます。したがって、次のようなものがあります。
FROM (VALUES (1, '157'), (2, '4F2'), (3, '5MISSING'), (4, '93O'), ...
) as Lst (rw, sn)
次に、これをテーブルに LEFT JOIN して、要求したような 2 列の結果テーブルを取得できます。
SELECT Lst.rn, t.serial_num
FROM (VALUES (1, '157'), (2, '4F2'), (3, '5MISSING'), (4, '93O'), ...
) as Lst (rw, sn)
LEFT JOIN sometable t ON t.serial_num = Lst.sn
この方法では、コレクションの値を使用して、動的 SQL ステートメント文字列を作成するためのループがおそらく必要になります。
埋め込み SQL の場合、シリアル番号を含むホスト配列変数を参照できる可能性があります。残念ながら、Java では、ループを使用せずに SQL で直接リストを使用して管理する方法がわかりません。