Вы можете использовать функцию COALESCE()
, которая возвращает первое ненулевое значение в списке:
SELECT COALESCE(c1.a, c2.a) a ,
COALESCE(c1.b, c2.b) b
FROM content c1
LEFT JOIN content c2 ON (c2.id = c1.default_id)
WHERE c1.id = 2;
Контрольный пример:
CREATE TABLE content (id int, a int, b int, default_id int);
INSERT INTO content VALUES (1, 33, 55, NULL);
INSERT INTO content VALUES (2, NULL, 11, 1);
Результат:
+------+------+
| a | b |
+------+------+
| 33 | 11 |
+------+------+
1 row in set (0.00 sec)