use*_*220 5 mysql sql hibernate hql
我有2张桌子:
CATEGORY (id)
POSTING (id, categoryId)
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写HQL或SQL查询来查找发布次数最多的前10个类别。
感谢帮助。
SQL查询:
SELECT c.Id, sub.POSTINGCOUNT
FROM CATEGORY c where c.Id IN
(
SELECT TOP 10 p.categoryId
FROM POSTING p
GROUP BY p.categoryId
order by count(1) desc
)
Run Code Online (Sandbox Code Playgroud)
总部:
Session.CreateQuery("select c.Id
FROM CATEGORY c where c.Id IN
(
SELECT p.categoryId
FROM POSTING p
GROUP BY p.categoryId
order by count(1) desc
)").SetMaxResults(10).List();
Run Code Online (Sandbox Code Playgroud)
http://sqlinthewild.co.za/index.php/2010/01/12/in-vs-inner-join/
在 SQL 中你可以这样做:
SELECT c.Id, sub.POSTINGCOUNT
FROM CATEGORY c
INNER JOIN
(
SELECT p.categoryId, COUNT(id) AS 'POSTINGCOUNT'
FROM POSTING p
GROUP BY p.categoryId
) sub ON c.Id = sub.categoryId
ORDER BY POSTINGCOUNT DESC
LIMIT 10
Run Code Online (Sandbox Code Playgroud)