将两个查询合并为一个

Dug*_*las 6 mysql sql join

有没有办法将这两个查询合并为一个?

query = "select foo from TABLE where foo like '%foo%'";

if (query.empty())
    query = "select bar from TABLE where bar like '%foo%'"
Run Code Online (Sandbox Code Playgroud)

更新:

select ifnull(foo,bar) from TABLE where foo like 'foo%' or bar like '%foo%';
Run Code Online (Sandbox Code Playgroud)

感谢Kamal的想法

Boh*_*ian 5

编辑

我刚刚意识到这可以返回行 - 这是修复:

select foo from TABLE where foo like '%foo%'
union all
select bar from TABLE where bar like '%foo%'
and not exists (select 'x' from TABLE where foo like '%foo%')
Run Code Online (Sandbox Code Playgroud)

使用UNION ALL(不UNION)会更快,因为对结果进行UNION 排序.

编辑

已经提出了非联合解决方案的请求.我没有.


Kam*_*mal 3

对于甲骨文

从 TABLE 中选择 NVL(foo,bar),其中 foo like '%foo%' 或 bar like '%foo%';