SQL:WHERE子句中的IF / CASE语句

雪人

是否可以返回与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'

这显然将返回苹果,葡萄和梨。我的目标是仅找到苹果和葡萄(如果存在),否则返回绿色的水果。

我试图引用这个类似的问题:SQL:WHERE子句中的IF子句,但是在合并where时遇到了麻烦。

我也尝试使用@@rowcount

select * from #Fruits where Fruit in ('Apple', 'Grapes')
if @@rowcount = 0
select * from #Fruits where Color = 'Green'

但是,如果第一个选择什么都不返回,则结果仍然返回一个空表。

谢谢。

蒂姆·比格莱森(Tim Biegeleisen)

我们可以使用联合来表达您的逻辑:

select * from #Fruits where Fruit in ('Apple', 'Grapes')
union all
select * from #Fruits where Color = 'Green' and
                            not exists (select 1 from #Fruits
                                        where Fruit in ('Apple', 'Grapes'));

我们也许还可以将逻辑组合成一个查询:

select *
from #Fruits
where
    Fruit in ('Apple', 'Grapes') or
    (Color = 'Green' and
     not exists (select 1 from #Fruits where Fruit in ('Apple', 'Grapes'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL语句where子句中的case语句

来自分类Dev

SQL查询的WHERE子句中的CASE语句

来自分类Dev

SQL where子句中大于或小于case语句的子句

来自分类Dev

CASE语句中的WHERE子句

来自分类Dev

where子句中的if / case语句

来自分类Dev

SQL:Where子句中的case子句

来自分类Dev

使用 IN 语句的 Where 子句中的 Case 语句

来自分类Dev

SQL在WHERE IN子句中使用CASE语句

来自分类Dev

选择where子句中的SQL Server CASE语句

来自分类Dev

SQL Server:WHERE子句中具有IN条件的CASE语句

来自分类Dev

在 SQL Server 的 WHERE 子句中使用 CASE 语句

来自分类Dev

SELECT子句中的CASE语句的T-SQL别名在WHERE子句中无法识别

来自分类Dev

Where子句中的参数Case语句

来自分类Dev

使用case语句或如果WHERE子句中

来自分类Dev

在where子句中使用case语句

来自分类Dev

mysql中where子句中的CASE语句

来自分类Dev

WHERE 子句中的 MDX case 语句

来自分类Dev

在 where 子句中加入的 Case 语句

来自分类Dev

如何从SQL的where子句中删除语句

来自分类Dev

WHERE子句中嵌套SQL语句的结果

来自分类Dev

SQL的where子句中的select语句

来自分类Dev

WHERE子句中嵌套SQL语句的结果

来自分类Dev

Android SQL语句中的多个Where子句

来自分类Dev

SQL select语句在where子句中

来自分类Dev

Where 子句中的 SQL Server 条件语句

来自分类Dev

嵌入在In子句中的SQL Server case语句

来自分类Dev

WHERE 子句中 CASE 语句中的 BETWEEN 问题

来自分类Dev

CASE 语句中的 WHERE

来自分类Dev

Oracle SQL:where子句中的Case语句返回错误“单行子查询返回多个行”