0

こんにちは 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 にする必要があります。それ以外の場合は、その行を選択する必要があります。これを単一のクエリで取得することは可能ですか?

4

1 に答える 1

0

トリッキーな解決策として、UNION SELECT NULL LIMIT 0,1指定したように、1行しか期待できない場合は最後に追加できます。したがって、結果には常に 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;
于 2012-07-21T12:32:00.363 に答える