Замена подзапросов HQL - PullRequest
       26

Замена подзапросов HQL

0 голосов
/ 04 июля 2018

как заменить этот подзапрос в HQL (так как HQL не поддерживает подзапросы):

SELECT l.aUser, count(l.aUser) 
FROM LifeTable l 
WHERE l.aUser IS NOT NULL
GROUP BY l.aUser 
HAVING count(l.aUser) = 
(SELECT min(cnt) 
 FROM (SELECT count(l.aUser) cnt 
       FROM LifeTable l 
       WHERE l.aUser IS NOT NULL 
       GROUP BY l.aUser) a)

Этот запрос должен выбрать пользователя (пользователей) с минимальным количеством появлений в LifeTable. Спасибо!

1 Ответ

0 голосов
/ 04 июля 2018

Я думаю, вы можете использовать all:

SELECT l.aUser, count(l.aUser) 
FROM LifeTable l 
WHERE l.aUser IS NOT NULL
GROUP BY l.aUser 
HAVING COUNT(*) <= ALL (SELECT count(*) as cnt 
                        FROM LifeTable l2 
                        WHERE l2.aUser IS NOT NULL AND
                              l2.aUser = l.aUser
                       );

И одно небольшое исправление. HQL поддерживает подзапросы, только не в предложении FROM.

...