我正在运行这样的查询:
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
提前致谢
我正在运行这样的查询:
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
提前致谢
通常的方法是外连接,连接固定数据和实际表的子查询:
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
我不确定我是否理解这个问题,但我猜你的意思是如果你想要 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