用于匹配条件子集的 PostgresSQL 查询

时间:2021-06-21 16:13:04

标签: database postgresql

是否有编写 PostgreSQL 查询以匹配条件子集的好方法?

举个例子:
在数据库中,我有一个包含以下字段的学生记录表:
NameAgeGenderYearGrade
现在,我有三个条件:Age > 15Gender == MaleYear > 8,我希望结果与其中两个匹配。

对我来说,如果我想匹配 10 个条件中的任何 8 个,那将是一场噩梦,因为我必须用 OR 连接所有组合。

是否有更实用的方法在 PostgreSQL 中编写该查询?

1 个答案:

答案 0 :(得分:1)

您可以将各种布尔条件转换为整数后求和:

SELECT *
FROM yourTable
WHERE (Age > 15)::int + (Gender = Male)::int + (Year > 8)::int >= 2;

上面我们要求 3 个条件中至少有 2 个的整数值为 1(意味着 3 个中的 2 个为真)。