是否有编写 PostgreSQL 查询以匹配条件子集的好方法?
举个例子:
在数据库中,我有一个包含以下字段的学生记录表:
Name
、Age
、Gender
、Year
、Grade
。
现在,我有三个条件:Age > 15
、Gender == Male
、Year > 8
,我希望结果与其中两个匹配。
对我来说,如果我想匹配 10 个条件中的任何 8 个,那将是一场噩梦,因为我必须用 OR
连接所有组合。
是否有更实用的方法在 PostgreSQL 中编写该查询?
答案 0 :(得分:1)
您可以将各种布尔条件转换为整数后求和:
SELECT *
FROM yourTable
WHERE (Age > 15)::int + (Gender = Male)::int + (Year > 8)::int >= 2;
上面我们要求 3 个条件中至少有 2 个的整数值为 1(意味着 3 个中的 2 个为真)。