未找到MySql结果,如何在没有匹配的情况下获得结果?

时间:2015-04-29 07:16:55

标签: mysql sql mysql-select-db

我正在运行这样的查询:

select x from table where c in ('variable','test','ok')

我得到所有匹配的C.(变量和测试)的结果 但是因为在c中不存在确定我没有得到任何东西。甚至不是null或0结果。

我怎么能对mysql说我想要一个结果,即使它找不到匹配条件的条件?

示例:

result 
x = 12
x = 25
x = NOT FOUND

提前致谢

2 个答案:

答案 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

SQL Fiddle