如果存在此行,则mysql返回null,否则返回数据

时间:2012-07-21 10:43:44

标签: mysql hibernate

嗨mysql查询中是否有任何选项返回NULL,数据库中不存在这样的行,否则返回行数据。这是我的查询

SELECT DISTINCT estimateResourceMthObj
       FROM EstimateResourceMth estimateResourceMthObj 
       WHERE estimateResourceMthObj.estimateResource.id IN 
            (
                    SELECT estimateResourceObj.id 
                    FROM EstimateResource estimateResourceObj
                    WHERE estimateResourceObj.estimateSub.id = 7 
            ) 
       AND estimateResourceMthObj.monthOrder >= 0 
       AND estimateResourceMthObj.monthOrder <  7;

如果不存在这样的行,我需要返回此查询的结果null,否则我需要选择该行。是否可以在单个查询中检索它?

1 个答案:

答案 0 :(得分:0)

作为一个棘手的解决方案,如果您希望只有一行(如您指定的话),则可以将UNION SELECT NULL LIMIT 0,1添加到末尾。因此,如果表格中没有匹配项,则结果将始终具有一个值NULL,如果存在,则estimateResourceMthObj

 SELECT DISTINCT estimateResourceMthObj
       FROM EstimateResourceMth estimateResourceMthObj 
       WHERE estimateResourceMthObj.estimateResource.id IN 
            (
                    SELECT estimateResourceObj.id 
                    FROM EstimateResource estimateResourceObj
                    WHERE estimateResourceObj.estimateSub.id = 7 
            ) 
       AND estimateResourceMthObj.monthOrder >= 0 
       AND estimateResourceMthObj.monthOrder <  7
UNION
 SELECT NULL
LIMIT 0,1;