亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有 N 次元組的 jOOQ“IN”謂詞

具有 N 次元組的 jOOQ“IN”謂詞

蕪湖不蕪 2022-11-30 16:17:20
我需要一個WHERE子句來檢查元組IN列表:(field1, field2) in (('1', 1), ('2', 2), ('3', 3))。這是 Postgres 中的有效 SQL。方言:POSTGRESjOOQ版本:3.9.6這種情況下正確的 jOOQ 語法是什么?jOOQ 3.9 文檔暗示這是可能的,但他們的示例只給出了 1 級:https ://www.jooq.org/doc/3.9/manual/sql-building/conditional-expressions/in-predicate-degree-n/這段代碼給出了我正在尋找的近似值,但我無法獲得正確的類型/數據,referenceOrderIdLineNumbers也無法獲得 jOOQ 生成的正確 SQL。Collection<Row2<String, Integer>> referenceOrderIdLineNumbers = ...List<Object[]> rows = dsl.select(... , field("count(TABLE3)", Integer.class )  .from(Tables.TABLE1)  .join(Tables.TABLE2).on(Tables.TABLE2.PK1.eq(Tables.TABLE1.PK1))  .join(Tables.TABLE3).on(Tables.TABLE3.PK2.eq(Tables.TABLE2.PK2))  .where(    row(Tables.TABLE1.FIELD1, Tables.TABLE2.FIELD2) // <-- what to     .in(referenceOrderIdLineNumbers)                // <-- do here??  )  .groupBy(...)  .fetch();
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

這是為我設計的。您可以嘗試讓 jOOQ 記錄它為您生成的 SQL,并嘗試直接針對您的數據庫運行所述 SQL。


參考:


https://www.jooq.org/doc/3.9/manual/sql-execution/logging/

https://www.jooq.org/doc/3.9/manual/sql-building/conditional-expressions/in-predicate-degree-n/

Collection<Row2<String, Integer>> field1Field2Collection = new LinkedList<>();

field1Field2Collection.add(row("1", 1));

field1Field2Collection.add(row("2", 2));

field1Field2Collection.add(row("3", 3));


Result<Record2<String, Integer>> field1Field2Results = dsl

        .select(Tables.TABLE1.FIELD1, Tables.TABLE2.FIELD2)

        .from(Tables.TABLE1)

        .join(Tables.TABLE2).on(Tables.TABLE2.PK1.eq(Tables.TABLE1.PK1))

        .where(row(Tables.TABLE1.FIELD1, Tables.TABLE2.FIELD2).in(field1Field2Collection))

        .fetch();


查看完整回答
反對 回復 2022-11-30
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號