Du kan:
SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;
Detta råkar fungera eftersom din fråga har en aggregerad funktion och följaktligen alltid returnerar en rad, även om ingenting hittas i den underliggande tabellen.
Vanliga frågor utan aggregat skulle returnera ingen rad i ett sådant fall. COALESCE
skulle aldrig bli uppringd och kunde inte rädda dig. Medan vi hanterar en enda kolumn kan vi lägga in hela frågan istället:
SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;
Fungerar också för din ursprungliga fråga:
SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;
Mer om COALESCE()
i manualen.
Mer om aggregerade funktioner i manualen.
Fler alternativ i detta senare inlägg:
- Hur man returnerar ett värde från en funktion om inget värde hittas