第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 querydsl 中選擇每組最大的元素

在 querydsl 中選擇每組最大的元素

手掌心 2023-10-13 15:10:51
我有一個(gè) sql 表,大致如下所示:+-----+------+-------+|  id | type | value |+-----+------+-------+|  1  |   X  |   20  ||  2  |   X  |   30  ||  3  |   Y  |  200  ||  4  |   Y  |  500  ||  5  |   Y  |  300  ||  6  |   Z  |    5  |+-----+------+-------+對(duì)于每種類型,我想檢索具有最大值的行。這是我的預(yù)期結(jié)果:+-----+------+|  id | type |+-----+------+|  2  |   X  | <-- had value = 30|  4  |   Y  | <-- had value = 500|  6  |   Z  | <-- had value = 5+-----+------+在 SQL 中,這可以表達(dá)如下(假設(shè)對(duì)于每種類型,不存在具有相同值的兩個(gè)條目,我可以排除這一點(diǎn)):select t1.id, t1.type from T t1inner join (  select t2.type, max(t2.value) as max_value from T t2  group by t2.type) on t1.type = t2.type  and t1.value = max_value但是我找不到使用 QueryDSL(版本 4)表達(dá)相同內(nèi)容的方法。我試過這個(gè):final JPQLQuery<Tuple> subquery = JPAExpressions    .from(q2)    .select(q2.type, q2.value.max())    .groupBy(q2.type);final JPQLQuery<Tuple> query = JPAExpressions    .from(q1)    .select(q1.id, q1.type)    .from(q1)    .innerJoin(subquery) // <-- not allowed    .on(q1.type.eq(q2.type), q1.value.eq(q2.value.max()));但是innerJoin()(和其他連接方法)僅采用表達(dá)式作為參數(shù),而不是另一個(gè)查詢。也同樣如此from()。
查看完整描述

2 回答

?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

where子查詢可以以表達(dá)式的形式放入外部查詢的子句中exists:


final JPQLQuery<Tuple> subquery = JPAExpressions

    .from(q2)

    .select(q2.type, q2.value.max())

    .groupBy(q2.type);

final JPQLQuery<Tuple> query = JPAExpressions

    .from(q1)

    .select(q1.id, q1.type)

    .from(q1)

    .where(subquery

        .having(q1.type.eq(q2.type), q1.value.eq(q2.value.max()))

        .exists());

請(qǐng)注意,此查詢可能效率很低。


查看完整回答
反對(duì) 回復(fù) 2023-10-13
?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

為了獲取前 1 個(gè)元素,您可以使用:

JPAExpressions.selectFrom(table)
    .select(table.dateTimeColumn.max())


查看完整回答
反對(duì) 回復(fù) 2023-10-13
  • 2 回答
  • 0 關(guān)注
  • 152 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)