我有一个班级Employee
,有三个班级成员: id,isVisible,sectionId 。
我想在HQL中查询:
现在我正在做类似的事情:
SELECT count(e.id), count(nullif(e.isVisible,0))
from Employee e where sectionId = :sectionId
但计数效率不高,因为需要全表扫描,而且我不需要计算数字。
我可以做两个查询。
通过运行简单的选择并将结果数限制为单个结果来查询员工部分:
SELECT e.id from Employee e where sectionId = :sectionId
如果返回结果,请查询可见部分中的第一个雇员:
SELECT e.id from Employee e where visible = 1 and sectionId = :sectionId
我的问题是:我可以在一个查询中进行两项检查吗?
答案 0 :(得分:0)
由于您只对从每个查询中获取一行感兴趣,因此您可以将它们全部连接起来以使用两列返回单行。您需要将Employee别名为E1和E2。