我有一个包含用户记录的 postgres 表。我想选择 last_visit
时间戳在上周内或帐户是在上周创建的所有记录。但是,如果用户尚未访问过,则 last_visit
时间戳为空(是的,我知道 - 它没有设置为默认帐户创建日期)。
所以我需要选择所有记录,其中或者 last_visit
是在上周,或者,如果它是空的,creation_date
是在最后一周。
类似这样的东西,虽然这行不通(我试过的其他许多可能的语法也行不通:
SELECT * FROM users
WHERE
IF (users.last_active IS NULL) THEN
value(users.last_visit,timestamp(users.creation_date)) < current timestamp - 7 days
ELSE
users.last_active < current timestamp - 7 days
END IF
有什么建议吗?
最佳答案
您可以为此使用 coalesce()
:
where coalesce(last_visit, creation_date) >= current_timestamp - interval '7' day
coalesce()
从提供的列表中返回第一个非空值。因此,如果 last_visit
为空,则使用 creation_date
。否则 last_visit
关于sql - 在 Postgres WHERE 子句中使用 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231809/