【问题标题】:JPQL group by user id and make other column results arranged to a list/arrayJPQL 按用户 ID 分组,并将其他列结果排列到列表/数组中
【发布时间】:2020-10-21 05:43:08
【问题描述】:

我有一个有效的查询:

SELECT p.user.id, p.id FROM Photo p WHERE p.user.id IN ?1 GROUP BY p.user.id, p.id

这会返回类似的数据

2, 656
2, 767
2, 788
6, 986
6, 1364
etc...

但它想要这样:

2; 656,767,788
6; 986,1364...

所以对于每个用户,p.user.id,然后是 p.id 列表。最好是格式化字符串,逗号分隔,因为它将作为 json 发送。

【问题讨论】:

    标签: java sql jpa jpql


    【解决方案1】:
    SELECT p.user.id, GROUP_CONCAT(p.id SEPARATOR ', ') from Photo p GROUP BY p.user.id;
    

    或者如果你绝对想要分号

    SELECT concat(p.user.id,';'), GROUP_CONCAT(p.id SEPARATOR ', ') from Photo p GROUP BY p.user.id; 
    

    【讨论】:

    • 谢谢!你给了一些提示。这完全行不通,因为 Group_concat 不是 JPQL 的一部分,但是通过 stackoverflow.com/a/62410812/1629074 这个技巧它可以工作,但是不接受分隔符 SEPARATOR ', ',但无论如何它使用 , 来分隔元素。
    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多