如果结果为空,PostgreSQL不会过滤

时间:2013-02-25 12:28:32

标签: sql postgresql query-optimization conditional

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

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

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

而不是:

SELECT * FROM users WHERE country = sp

If result empty then

SELECT * FROM users

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

1 个答案:

答案 0 :(得分:2)

select *
from users
where
    country = sp
    or not exists (select 1 from users where country = sp)