Предложение HAVING
работает только с выражением GROUP BY
.
Предложение HAVING позволяет фильтровать результаты GROUP BY.
Ваш вопрос:
Я хочу получить максимальное значение. Как я могу сделать выражение из этого
Но вы можете сделать запрос без GROUP BY
и HAVING
, чтобы делать то, что вы хотите:
select c from TableA c WHERE c.validFrom = (
SELECT MAX(c2.validFrom)
FROM TableA c2
WHERE c2.Id = c.Id AND c.forumId = :forumId AND c.isDefault = true
)
Если вы хотите использовать GROUP BY
и HAVING
, вы можете сделать:
SELECT c FROM TableA c WHERE c.validFROM = (
SELECT MAX(validFROM)
FROM TableA
WHERE forumId = :forumId AND isDefault = true
GROUP BY validFROM
HAVING validFROM=c.validFROM
)