sql - select语句内的HQL比较

标签 sql select hql

考虑 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/

相关文章:

java - 连接两张表HQL查询

java - 两个以相同数据开头的 ArrayList

javascript - 比较两个选择的选项,如果 value != id 则隐藏

sql - Oracle 中 DATEADD() 的等效函数

sql - 我需要显示员工表中实体的名字和姓氏,这些实体在 StaffSoldVehicle 表中出现十次以上并且是男性

mysql - 不选择任何表列的查询 - 我是否理解正确?

java - Hibernate (mysql) 为同一个查询返回不同的结果

sql - 带有限制的 Grails executeUpdate 不适用于删除

sql - 新旧触发代码

sql - 如何处理具有多个批量插入的表的主键?