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