【发布时间】:2020-08-10 12:21:36
【问题描述】:
是否可以返回匹配 where 子句第一部分的记录;但是,如果没有找到结果,那么移动到 where 子句的第二部分?
例子:
create table #Fruits (
Fruit varchar(20),
Color varchar(20),
Size varchar(20)
)
insert into #Fruits
values ('Apple', 'Red', 'Medium'),
('Pear', 'Green', 'Medium'),
('Banana', 'Yellow', 'Medium'),
('Grapes', 'Purple', 'Small')
select * from #Fruits
where Fruit in ('Apple', 'Grapes') or Color = 'Green'
这显然会返回 Apple、Grapes 和 Pear。我的目标是只找到存在的苹果和葡萄,否则返回绿色的水果。
我试图参考这个类似的问题:SQL: IF clause within WHERE clause,但在合并 where 时遇到了麻烦。
我也尝试过使用@@rowcount:
select * from #Fruits where Fruit in ('Apple', 'Grapes')
if @@rowcount = 0
select * from #Fruits where Color = 'Green'
但如果第一次选择什么都不返回,它仍然返回一个空表作为结果。
谢谢。
【问题讨论】:
标签: tsql if-statement ssms where-clause case-statement