gpt4 book ai didi

sql - 在 PostgreSQL 中查找部分匹配条件的行

转载 作者:行者123 更新时间:2023-11-29 12:35:54 25 4
gpt4 key购买 nike

有没有一种方法可以查询表中匹配所有条件或条件子集的行,并定义该子集的最小大小?

例如:

SELECT * FROM table WHERE <condition 1> AND <condition 2> AND ... AND <condition 9>

给定这 9 个条件,我能否找到至少匹配其中 6 个条件的所有行?另外 - 我可以知道每行匹配了多少个条件吗?

最佳答案

也许是这样的:

select *
from (
select
t.*,
case when <condition1> then 1 else 0 end
+ case when <condition2> then 1 else 0 end
. . .
+ case when <conditionN> then 1 else 0 end as match_count
from your_table t
) where match_count >= 6;

上述解决方案是标准解决方案,适用于大多数数据库。在 Postgres 中,由于条件的输出是 bool 值, bool 值可以是 casted使用 <condition>::int 转换为 int(true - 1 和 false - 0) ,同样的解决方案可以重写为:

select *
from (
select
t.*,
<condition1>::int
+ <condition2>::int
+ ...
+ <conditionN>::int as match_count
from your_table t
) where match_count >= 6;

关于sql - 在 PostgreSQL 中查找部分匹配条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42930617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com