考虑 HQL 中的以下查询:
SELECT m.id, (SELECT (COUNT(*) > 0) FROM SubqueryTable...) FROM MyTable AS m;
我需要从选择内的选择查询返回 bool 值信息,并包含是否有任何条目满足该查询的信息。
上面的查询在 SQL 中可以很好地翻译,但是 hibernate 给了我一个错误。我无法将比较运算符与聚合函数一起使用。
在 HQL 中从 select 子句内的子查询获取信息的正确方法是什么?
最佳答案
不确定如何将其转换为 HQL,但您的查询可以写为:
SELECT m.id,
(SELECT COUNT(*) FROM SubqueryTable...) > 0
AS b
FROM MyTable AS m;
但也许你可以使用这个 - 这似乎绕过了问题,因为它使用 INT
列:
SELECT m.id,
CASE WHEN (SELECT COUNT(*) FROM SubqueryTable...) > 0
THEN 1
ELSE 0
END AS b
FROM MyTable AS m;
您也可以尝试使用EXISTS
:
SELECT m.id,
EXISTS (SELECT * FROM SubqueryTable...)
AS b
FROM MyTable AS m;
或者:
SELECT m.id,
CASE WHEN EXISTS (SELECT * FROM SubqueryTable...)
THEN 1
ELSE 0
END AS b
FROM MyTable AS m;
关于sql - select语句内的HQL比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049924/