Als u een rij met twee kolommen wilt krijgen als er twee niet-null-kolommen zijn, en 1 als er maar één is, moet u uw query dynamisch maken.
Als u altijd 1 kolom wilt hebben waarin elke rij een niet-null-waarde bevat, kunt u dit doen met een unie.
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 = ?
Als je wilt weten uit welke kolommen de waarden komen, kun je zoiets als dit doen:
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 = ?
Opmerking:Union verwijdert ook dubbele resultaten. Als je duplicaten wilt bewaren, gebruik dan UNION ALL
.