如果某个条件为真,我想从表中选择一些行,然后如果另一个条件为真,则选择其他一些行,否则(最终)选择其他一些行。主要问题是我想从命令行插入一个参数,如下所示:
if exists(select a.* from a
left join b on a.id=b.id
where b.id=:MY_PARAMETER)
else if exists
(select c.* from c where c.id=:Another_Parameter)
else
(select * from b)
我知道我做错了什么,但我不知道是什么。我尝试使用 CASE-Then,但找不到适应该解决方案的方法。任何的想法?谢谢
PS:我阅读了一些其他类似的帖子,但正如我解释的那样,我在这方面遇到了困难。
<===编辑=====>
希望我澄清一些事情:
select
case when b.id=6
then (select * from a)
else (select a.* from a join b
on b.aid=a.aid)
end
from a join b
on b.aid=a.aid
join c
on b.id=c.bid
where b.id=:num
在这种情况下,问题在于它不允许在 CASE 语句中返回多个值。