mysql选择加入多个条件

mysql选择加入多个条件,mysql,sql,Mysql,Sql,我有三个表:sites、features和site\u feature “站点”表如下所示: 地点 “功能”表如下所示: 特征 “站点功能”表如下所示: 网站功能 +-----+--------+------------+ |id | site_id| feature_id | +-----+--------+------------+ | 1 | 1 | 1 | | 2 | 1 | 4 | | 3 | 2 |

我有三个表:sites、features和site\u feature “站点”表如下所示: 地点

“功能”表如下所示: 特征

“站点功能”表如下所示: 网站功能

+-----+--------+------------+
|id   | site_id| feature_id | 
+-----+--------+------------+
| 1   | 1      | 1          |
| 2   | 1      | 4          | 
| 3   | 2      | 1          | 
| 4   | 2      | 2          | 
| 5   | 2      | 5          | 
| 6   | 3      | 1          | 
| 7   | 3      | 4          | 
| 8   | 4      | 7          | 
| 9   | 5      | 8          | 
+-----+--------+------------+
我想得到的网站有我选择的多个功能,例如,我想列出的网站与功能fea1和fea4

如何构建此查询?
提前谢谢

您可以按操作使用分组,如下所示:

SELECT
  site_id, 
  count(*)
FROM site_feature
GROUP BY site_id
HAVING count(*) > 1;

以下是分组功能。

如果您希望站点具有两个特定功能,并且站点可以具有其他功能以及两个指定功能,则使用
分组依据
拥有

select sf.site_id
from site_feature sf join
     feature f
     on sf.feature_id = f.id
where f.feature in ('fea1', 'fea4')
group by sf.site_id
having count(distinct f.feature) = 2;

如果您想将其扩展到其他功能,请将它们添加到
where
子句列表中,并增加值
2

我想最好使用>=2个anks,我想同时列出站点id和fea1和fea4,而不是其中任何一个,是否有简单的解决方案?@MKhalidJunaid No,答案是正确的。@user3613815。这就是这个查询所做的。你是对的,谢谢你做了什么编码来试图解决这个问题?
SELECT
  site_id, 
  count(*)
FROM site_feature
GROUP BY site_id
HAVING count(*) > 1;
select sf.site_id
from site_feature sf join
     feature f
     on sf.feature_id = f.id
where f.feature in ('fea1', 'fea4')
group by sf.site_id
having count(distinct f.feature) = 2;