次のことができます:
SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;
クエリには集計関数があり、その結果常にあるため、これはたまたま機能します。 基になるテーブルに何も見つからない場合でも、行を返します。
集計のないプレーンクエリは行なしを返します このような場合には。 COALESCE
呼び出されることはなく、あなたを救うことはできませんでした。単一の列を処理している間、代わりにクエリ全体をラップできます:
SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;
元のクエリでも機能します:
SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;
COALESCE()
の詳細 マニュアルに記載されています。
マニュアルに記載されている集計関数の詳細。
その他の代替案 この後の投稿で:
- 値が見つからない場合に関数から値を返す方法