加入 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;
我有一个大的 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;