我正在运行这样的查询:
select x from table where c in ('variable','test','ok')
我得到所有匹配的C.(变量和测试)的结果 但是因为在c中不存在确定我没有得到任何东西。甚至不是null或0结果。
我怎么能对mysql说我想要一个结果,即使它找不到匹配条件的条件?
示例:
result
x = 12
x = 25
x = NOT FOUND
提前致谢
答案 0 :(得分:1)
我不确定我是否理解这个问题,但我想你的意思是你想要c in ('variable','test','ok')
的X列值,如果没有,你想要'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
答案 1 :(得分:1)
通常的做法是外连接,它连接固定数据和实际表的子查询:
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