Hvis du vil have en række med to kolonner, når der er to kolonner, der ikke er nul, og 1, hvis der kun er én, skal du oprette din forespørgsel dynamisk.
Hvis du altid vil have 1 kolonne, hvor hver række indeholder en ikke-nul værdi, kan du gøre det med en union.
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 = ?
Hvis du vil kunne vide, fra hvilke kolonner værdierne kommer, kan du gøre sådan her:
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 = ?
Bemærk:union fjerner også duplikerede resultater. Hvis du vil beholde dubletter, skal du bruge UNION ALL
.