Postgres:如何在 Having 子句中进行 NULL 友好的 MIN 过滤?
Postgres: How to make NULL friendly MIN filtering in Having clause?
audit_table
可能包含重复的 userId
.
我们有以下 SQL 查询
SELECT userId FROM audit_table
GROUP BY userId
HAVING MIN(updatedDate) > ?;
updatedDate
字段可能为空,如果 audit_table
中所有行的具体 userId
仅包含空值,我看不到这些行,但我想要。
有什么办法可以实现吗?
一种方法是显式比较:
SELECT userId FROM audit_table
GROUP BY userId
HAVING MIN(updatedDate) > ? OR MIN(updatedDate) IS NULL;
另一种方法是统计小于?
或NULL
的updatedDates
:
HAVING COUNT(*) FILTER (WHERE updatedDate <= ?) = 0;
audit_table
可能包含重复的 userId
.
我们有以下 SQL 查询
SELECT userId FROM audit_table
GROUP BY userId
HAVING MIN(updatedDate) > ?;
updatedDate
字段可能为空,如果 audit_table
中所有行的具体 userId
仅包含空值,我看不到这些行,但我想要。
有什么办法可以实现吗?
一种方法是显式比较:
SELECT userId FROM audit_table
GROUP BY userId
HAVING MIN(updatedDate) > ? OR MIN(updatedDate) IS NULL;
另一种方法是统计小于?
或NULL
的updatedDates
:
HAVING COUNT(*) FILTER (WHERE updatedDate <= ?) = 0;