sql >> データベース >  >> RDS >> PostgreSQL

JOOQの複合主キーで複数の行を選択するにはどうすればよいですか?

    これを手動で行う方法

    DSL.row() 行の値の式を作成するには、次のようにします。

    row(TEST_TBL.ID_PART_1, TEST_TBL.ID_PART_2).in(
      row("id_part_1_1", "id_part_2_1"),
      row("id_part_1_2", "id_part_2_2")
    );
    

    jOOQも参照してください。 INに関するマニュアルセクション 述語、次数> 1

    埋め込み可能なキーを使用する

    または、新しいjOOQ 3.14 <embeddablePrimaryKeys/> この機能を使用すると、すべての主キーとそれらを参照する外部キーのレコードタイプを生成できます。クエリは次のようになります:

    ctx.select()
       .from(TEST_TBL)
       .where(TEST_TBL.TEST_TBL_PKEY.in(
          new TestTblPkeyRecord("id_part_1_1", "id_part_2_1"),
          new TestTblPkeyRecord("id_part_1_2", "id_part_2_2")
       ))
       .fetch();
    

    これにより、元のクエリと同じクエリが生成されますが、安全に入力できるため、キー列を二度と忘れることはありません。主キーを照会するときだけでなく、主キーに参加するときも!キーを変更すると、コンパイルエラーが発生します:

    ctx.select()
       .from(TEST_TBL)
       .join(OTHER_TEST_TBL)
       .on(TEST_TBL.TEST_TBL_PKEY.eq(OTHER_TEST_TBL.TEST_TBL_PKEY.TEST_TBL_FKEY))
       .fetch();
    

    または、暗黙的な結合 次のようになります:

    ctx.select(OTHER_TEST_TBL.testTbl().fields(), OTHER_TEST_TBL.fields())
       .from(OTHER_TEST_TBL)
       .fetch();
    



    1. Postgresテーブルから2次元配列へ

    2. SQLのフォーマットされていないテキストから日付を解析する

    3. FROMキーワードが予期された場所に見つかりません(Oracle SQL)

    4. MySQLテーブル。*ASリファレンス