sql >> Database teknologi >  >> RDS >> PostgreSQL

Returner nul, hvis der ikke findes nogen post

Du kunne:

SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;

Dette virker tilfældigvis, fordi din forespørgsel har en samlet funktion og derfor altid returnerer en række, selvom der ikke findes noget i den underliggende tabel.

Almindelige forespørgsler uden aggregat ville returnere ingen række i et sådant tilfælde. COALESCE ville aldrig blive ringet op og kunne ikke redde dig. Mens vi har at gøre med en enkelt kolonne, kan vi ombryde hele forespørgslen i stedet:

SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;

Virker også til din oprindelige forespørgsel:

SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;

Mere om COALESCE() i manualen.
Mere om samlede funktioner i manualen.
Flere alternativer i dette senere indlæg:

  • Sådan returneres en værdi fra en funktion, hvis der ikke findes nogen værdi


  1. ECONNREFUSED for Postgres på nodeJS med dockers

  2. Hvordan kan jeg oprette en begrænsning for at kontrollere, om en e-mail er gyldig i postgres?

  3. Arbejder med JDBC og Spring

  4. 10 tidsbesparende genveje i Microsoft Access