【问题标题】:PostgreSQL don't filter if results empty如果结果为空,PostgreSQL 不过滤
【发布时间】:2018-07-30 10:05:08
【问题描述】:

我想知道是否可以仅通过一个查询获得以下行为。

使用WHERE 过滤结果,但仅在结果不为空时应用过滤器,例如可选的WHERE

例如,考虑到有一个 users 表,我想从西班牙检索所有用户,但如果没有,那么我想要所有用户(比如 Where 不会被应用)。

代替:

SELECT * FROM users WHERE country = sp

If result empty then

SELECT * FROM users

我想在一个 sql 语句中执行此行为...有可能吗?

【问题讨论】:

    标签: sql postgresql query-optimization conditional


    【解决方案1】:
    select *
    from users
    where
        country = sp
        or not exists (select 1 from users where country = sp)
    

    【讨论】:

    • 相当优雅。我喜欢这样:)
    猜你喜欢
    • 2012-04-20
    • 2015-09-28
    • 2020-06-05
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多