我使用以下查询根据case语句中指定的条件获取多个列值,并遇到以下错误操作数应该只包含1列mysql查询。我只是无法弄清楚问题是什么。有一个简单的解决方法,或其他方式来编写我的查询?
SELECT id,
CASE
WHEN id='' THEN (select * where name='abc')
ELSE (select * from sample)
END
FROM sample WHERE name='abc' and status='xyz'
答案 0 :(得分:1)
您可以使用结合了三种不同查询的联合查询:
select * from samples
where name='abc' and status='xyz'
union all
select * from samples
where
name='abc' and not exists (
select * from samples
where name='abc' and status='xyz'
)
union all
select * from samples
where
not exists (
select * from samples
where name='abc'
)
第一部分将返回与名称和状态条件匹配的样本中的所有记录
第二部分将返回样本中与名称条件匹配的所有记录,但仅在第一个查询未返回任何内容时
只要第一个和第二个查询都没有返回任何内容,三分之一部分就会返回样本中的所有记录
(这三个查询可以与OR组合在一起,但联合查询更容易阅读和更清晰)