2014-01-10 55 views
3

如何选择返回0时没有行匹配条件,并在任何行包含与null值的列返回null最大列值返回0,空的最大列值休眠:如何选择基于条件

例如:

SELECT MAX(groupId) from Interview WHERE appId= 61 

当没有行本匹配该条件,或者当存在与groupId=null行,它返回 0 - 当queryForInt()null - 当queryForList()并获得第一个条目。

请让我知道,查询更改或Hibernate方法。

+0

你的第一句话违背你的第二句。也许你应该考虑两个查询。或者一般的查询并处理java中的“业务逻辑”。 –

回答

0

你可以尝试:

SELECT CASE MaxGroupId当计(的groupId)= 0,那么0 ELSE MAX(的groupId) END FROM采访 WHERE的appid = 61

SQL IF语句的帮助:How do I perform an IF...THEN in an SQL SELECT?

或者类似的东西:

SELECT CASE WHEN MaxGroupId COUNT(RECORD_ID)= 0 THEN 0 ELSE MAX(的groupId) END FROM采访 WHERE的appid = 61和GROUP BY ANOTHERCOLUMN

+0

问题是,即使没有行匹配和groupId为空,count(groupId)始终返回0。 无论如何感谢您的建议。现在我已经在我的代码中处理了用例。 谢谢全部 – Chinmaya

+0

您可以使用其他一列来指望。你的采访表中还有哪些其他专栏。是否有像记录ID一样的非主键?你可以使用它。 – pavbhaji

+0

太棒了。它的工作原理非常好..非常感谢... select CASE WHEN COUNT(id)= 0 THEN 0 ELSE MAX(groupId)END as maxGroupId FROM Interview WHERE applicationId = 61 – Chinmaya