Ако искате да получите ред с две колони, когато има две колони, различни от нула, и 1, ако има само една, трябва да създадете динамично своята заявка.
Ако искате винаги да имате 1 колона, където всеки ред съдържа стойност, различна от нула, можете да го направите с обединение.
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 = ?
Ако искате да знаете от кои колони идват стойностите, можете да направите нещо подобно:
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 = ?
Забележка:union също премахва дублиращи се резултати. Ако искате да запазите дубликати, използвайте UNION ALL
.