我試圖創建一個HQL查詢,計算特定日期(例如,有多少登錄等)的特定用戶列表上的幾個統計信息。每個統計有不同的標準):HQL - 計數在SELECT子句不起作用
SELECT
COUNT(SELECT u2.id FROM User u2 WHERE u.id = u2.id AND u2.lastLoginDate BETWEEN x AND y),
COUNT(some other stats), ...
FROM User u
WHERE u.managerId IN (...)
雖然COUNT(SELECT...)
條款在MySQL工作,在HQL我得到以下異常: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: SELECT
任何人都知道如何使它發揮作用?
編輯: 好了,所以根據這個建議HQL - COUNT on SELECT clause not working現在查詢看起來是這樣的:
SELECT
COUNT(DISTINCT CASE WHEN u.lastLogin BETWEEN x AND y THEN u.id ELSE null END),
COUNT(DISTINCT CASE WHEN ... END),
SUM(CASE WHEN u.id = p.userId THEN p.amount ELSE null END),
FROM User u, Points p,... WHERE u.managerId IN (...)
問題是,計算的總和,因爲FROM子句不正確 - 它是由數乘以的表格。 例如,如果總數應該是80,並且在from子句中有4個表格,則總和爲480!
明顯地,不同的東西不能正確工作。有任何想法嗎?
這是完全不同的問題。在任何情況下,只需遵循一條簡單的規則:不要在'from'子句中使用逗號。使用顯式連接,你會解決你的問題。 –