JPQL / SQL: Как выбрать * из таблицы с группировкой по одному столбцу? - PullRequest
2 голосов
/ 27 апреля 2010

Я хотел бы выбрать каждый столбец таблицы, но хотел бы иметь разные значения для одного атрибута моих строк (в данном случае City). Мне не нужны дополнительные столбцы, такие как счетчики или что-то еще, просто ограниченное количество результатов, и кажется, что невозможно непосредственно ОГРАНИЧИТЬ результаты в запросе JPQL.

Оригинальный стол:

ID    |   Name   |   City
---------------------------
1     |   John   |   NY
2     |   Maria  |   LA
3     |   John   |   LA
4     |   Albert |   NY

Требуемый результат, если я сделаю отчет по городу:

ID    |   Name   |   City
---------------------------
1     |   John   |   NY
2     |   Maria  |   LA

Каков наилучший способ сделать это? Спасибо за вашу помощь.

Ответы [ 2 ]

4 голосов
/ 27 апреля 2010

В JPQL вы можете сделать что-то вроде этого:

select e 
from MyEntity e 
where e.id in (select min(e.id) from MyEntity e group by e.city) 

Возвращает:

MyEntity [id=1, name=John, city=NY]
MyEntity [id=2, name=Maria, city=LA]
0 голосов
/ 27 апреля 2010

Не знаю о JPQL, но SQL будет:

SELECT x.*
  FROM TABLE x
  JOIN (SELECT MIN(t.id) AS min_id,
               t.city
          FROM TABLE t
      GROUP BY t.city) y ON y.min_id = x.id
                        AND y.city = x.city
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...