MySql результаты, которые не были найдены, как получить результат без совпадения?
Я выполняю запрос, как это:
select x from table where c in ('variable','test','ok')
Я получаю результаты для всех соответствующих C. (переменная и тест) Но, так как в c не существует ok, я ничего не получаю. Даже не ноль или 0 результат.
Как я могу сказать mysql, что я хочу получить результат, даже если он не находит соответствия для термина в условии in?
пример:
result
x = 12
x = 25
x = NOT FOUND
заранее спасибо
2 ответа
Я не уверен, что я понимаю проблему, но я предполагаю, что вы имеете в виду, что вы хотите значение X столбца, если c in ('variable','test','ok')
и если нет, то вы хотите 'NOT FOUND'
? Переместить IN
состояние из WHERE
пункт к select
список:
select case when c in ('variable','test','ok') then x
else 'NOT FOUND' end
from table
Или, возможно, вы имеете в виду, что если вообще не было возвращено ни одной строки, вы хотите одну 'NOT FOUND'
строка? Делать UNION ALL
с этим рядом.
select x from table where c in ('variable','test','ok')
UNION ALL
select 'NOT FOUND'
from (select count(*) as cnt from table
where c in ('variable','test','ok') t
where cnt = 0
Обычный подход для этого - внешнее соединение, которое объединяет подзапрос для ваших фиксированных данных и вашей фактической таблицы:
select v1.name, coalesce(t.x, 'NOT FOUND')
from (
select 'variable' as name union all
select 'test' union all
select 'x') v1
left join t on t.c = v1.name