加入 returns 垂直 table 一行或多行的多个子查询

join multiple subqueries that returns one or more rows in vertical table

我有一个大的 MySQL 垂直 table 命名为 'profile_features' 像这样:

id Profile_id feature_id value
1 1 1 Rick
2 1 2 Novak
3 5 3 5428
4 5 1 Joe
... ... ... ...

(以上table为所有数据的短部分)

如何找到特定的 Profile_ids 满足以下所有条件: (满足第一个和第二个和第三个条件)。 结果我想要所有 profile_ids。

 profile_id FROM profile_features WHERE( feature_id IN(2, 64, 90, 38, 73, 115) AND value ='Joe')
AND
 profile_id FROM profile_features WHERE( feature_id IN(1, 55, 86, 23, 72, 114) AND value ='US')
AND
 profile_id FROM profile_features WHERE( feature_id IN(4, 59, 98, 43, 78, 120) AND value ='54782')

按个人资料汇总,然后在 HAVING 子句中针对您的条件使用三个单独的断言:

SELECT profile_id
FROM profile_features
GROUP BY profile_id
HAVING SUM(feature_id IN (2, 64, 90, 38, 73, 115) AND value = 'Joe') > 0 AND
       SUM(feature_id IN (1, 55, 86, 23, 72, 114) AND value = 'US') > 0  AND
       SUM(feature_id IN (4, 59, 98, 43, 78, 120) AND value = '54782') > 0;