レコードが存在しない場合は合計または 0 を選択するにはどうすればよいでしょうか? 質問する

レコードが存在しない場合は合計または 0 を選択するにはどうすればよいでしょうか? 質問する

特定の条件を満たすすべての値の合計を返すクエリを作成する必要がありますが、行が見つからない場合は null ではなく 0 を返す必要があります。例:

tab    
+---------------+-----+
| descr         | num |
+---------------+-----+
| hello there   | 5   |
| hi there      | 10  |
| hello         | 10  |
| hi there!     | 15  |
+---------------+-----+

このクエリ:

SELECT sum(num) AS val FROM tab WHERE descr LIKE "%hello%";

を返す必要がありますし、実際に返します15。ただし、

SELECT sum(num) AS val FROM tab WHERE descr LIKE "%greetings%";

を返すはずです0が、 を返しますnull

これが可能かどうか誰か説明してもらえますか?

ベストアンサー1

いかがでしょうか:

SELECT COALESCE(sum(num), 0) AS val FROM tab WHERE descr LIKE "%greetings%";

合体この関数は基本的に、「最初のパラメータを返す。ただし、最初のパラメータが null の場合は 2 番目のパラメータを返す」という意味です。このようなシナリオでは非常に便利です。

おすすめ記事