Есть таблица T0, которая выглядит так и использует MySQL 5.7.Я храню идентификаторы в id
, текст в C1, и NULL или целые числа в C2 - NULL является значением по умолчанию.Запись в C1 может иметь несколько значений в C2.Если вы знаете о таблицах Closure, вы заметите, что эта таблица немного отличается тем, что записи C1 не соответствуют записям id.
id | C1 | C2
---+----+-----
1 | a | NULL
2 | b | NULL
3 | c | NULL
4 | c | 3
5 | c | 5
6 | d | NULL
Значение C1 сохраняется в C2.Таблица установлена так, что C1 не может иметь повторяющиеся значения в C2.Так, например, с не может иметь два 3.Таким образом, таблица уникальна в этом смысле.
Хотелось бы, чтобы запрос возвращал все строки, где значение поля C1 равно 3, а если значение C1 не равно 3, возвращает строку, где значение C1 равно NULL.
Пробовал следующий код, но длябезрезультатно.
SELECT *
FROM T0
WHERE C2 = 3 OR C2 IS NULL
Таким образом, запрос должен иметь возможность вернуть 1, 2, 4 и 6. Желаемый результат:
id | C1 | C2
---+----+-----
1 | a | NULL
2 | b | NULL
4 | c | 3
6 | d | NULL