PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kembalikan nol jika tidak ada catatan yang ditemukan

Anda dapat:

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

Ini berhasil, karena kueri Anda memiliki fungsi agregat dan akibatnya selalu mengembalikan baris, bahkan jika tidak ada yang ditemukan di tabel yang mendasarinya.

Kueri biasa tanpa agregat akan mengembalikan tidak ada baris dalam kasus seperti itu. COALESCE tidak akan pernah dipanggil dan tidak bisa menyelamatkanmu. Saat berurusan dengan satu kolom, kita dapat membungkus seluruh kueri sebagai gantinya:

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

Berfungsi untuk kueri asli Anda juga:

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

Selengkapnya tentang COALESCE() di manual.
Selengkapnya tentang fungsi agregat di manual.
Lebih banyak alternatif di posting selanjutnya ini:

  • Cara mengembalikan nilai dari suatu fungsi jika tidak ada nilai yang ditemukan


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psycopg2:masukkan beberapa baris dengan satu kueri

  2. Apakah Postgres mendukung transaksi bersarang atau otonom?

  3. Perbaiki "ERROR:setiap kueri INTERSECT harus memiliki jumlah kolom yang sama" di PostgreSQL

  4. Indeks Sebagian tidak digunakan dalam klausa ON CONFLICT saat melakukan upsert di Postgresql

  5. Ukuran Tabel Partisi di PostgreSQL 9.0