在JPQL中使用select distinct并检索所有列

时间:2016-08-24 14:03:00

标签: java jpa select distinct jpql

我正在使用JPQL,我想使用DISTINCT删除所有重复的行,同时检索表中的所有列,我写了这样的内容:

SELECT DISTINCT cl.name, cl.age 
FROM Client AS cl
WHERE cl.country='****'

此查询只返回两列nameage

2 个答案:

答案 0 :(得分:4)

假设您有一个唯一的id,您可以编写查询以使用GROUP BY,如下所示:

SELECT client FROM Client client
WHERE client.id IN (
    SELECT MIN(c.id)
    FROM Client c
    WHERE c.country='****'
    GROUP BY c.name, c.age
)

您不应检索Client的所有字段,因为您不应选择非汇总字段。

答案 1 :(得分:1)

试试这个:

DELETE from Client c
Where c.name IN (SELECT DISTINCT cl.name
                 FROM Client AS cl
                 WHERE cl.country='****')

但要注意你的持久化上下文,以避免数据损坏。