0

我正在运行这样的查询:

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

我得到了所有匹配 C 的结果。(变量和测试)但是因为 ok 在 c 中不存在,所以我什么也得不到。甚至没有 null 或 0 结果。

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

例子:

result 
x = 12
x = 25
x = NOT FOUND

提前致谢

4

2 回答 2

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小提琴

于 2015-04-29T08:15:01.820 回答
1

我不确定我是否理解这个问题,但我猜你的意思是如果你想要 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
于 2015-04-29T07:48:42.477 回答