Jika Anda ingin mendapatkan baris dengan dua kolom saat ada dua kolom bukan nol, dan 1 jika hanya ada satu, Anda harus membuat kueri secara dinamis.
Jika Anda ingin selalu memiliki 1 kolom yang setiap barisnya berisi nilai bukan nol, Anda dapat melakukannya dengan gabungan.
SELECT a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT c FROM tbl WHERE c IS NOT NULL AND id = ?
Jika Anda ingin mengetahui dari kolom mana nilai tersebut berasal, Anda dapat melakukan sesuatu seperti ini:
SELECT 'col a' AS ColName, a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT 'col b', b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT 'col c', c FROM tbl WHERE c IS NOT NULL AND id = ?
Catatan:union juga menghapus hasil duplikat. Jika Anda ingin menyimpan duplikat, gunakan UNION ALL
.