Możesz:
SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;
Tak się składa, ponieważ Twoje zapytanie ma funkcję agregującą, a co za tym idzie zawsze zwraca wiersz, nawet jeśli nic nie zostało znalezione w tabeli poniżej.
Zwykłe zapytania bez agregacji zwróciłyby brak wiersza w takim przypadku. COALESCE
nigdy nie zostałby wezwany i nie mógłby cię uratować. Mając do czynienia z pojedynczą kolumną, możemy zamiast tego zawinąć całe zapytanie:
SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;
Działa również w przypadku pierwotnego zapytania:
SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;
Więcej o COALESCE()
w instrukcji.
Więcej informacji o funkcjach agregujących w instrukcji.
Więcej alternatywnych w tym późniejszym poście:
- Jak zwrócić wartość z funkcji, jeśli nie znaleziono żadnej wartości