首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql选择使用多个条件进行连接

mysql选择使用多个条件进行连接
EN

Stack Overflow用户
提问于 2014-05-08 04:39:48
回答 2查看 37关注 0票数 0

我有三个表: sites、features和site_feature " sites“表如下:sites

代码语言:javascript
复制
+-----+--------+
|id   | name   | 
+-----+--------+
| 1   | site1  | 
| 2   | site2  |
| 3   | site3  |
| 4   | site4  |
| 5   | site5  |
| 6   | site6  |
| 7   | site7  |
| 8   | site8  |
+-----+--------+

“feature”表如下所示:

代码语言:javascript
复制
+-----+--------+
|id   | feature| 
+-----+--------+
| 1   | fea1   | 
| 2   | fea2   |
| 3   | fea3   |
| 4   | fea4   |
| 5   | fea5   |
| 6   | fea6   |
| 7   | fea7   |
| 8   | fea8   |
+-----+--------+

类似下面的" site_feature“表:site_feature

代码语言:javascript
复制
+-----+--------+------------+
|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。

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

EN

回答 2

Stack Overflow用户

发布于 2014-05-08 04:44:39

如果您想要具有两个特定功能的站点,并且这些站点既可以具有指定的两个特定功能,也可以具有其他功能,则可以使用带有havinggroup by

代码语言:javascript
复制
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值。

票数 1
EN

Stack Overflow用户

发布于 2014-05-08 04:41:49

您可以使用GROUP BY操作,如下所示:

代码语言:javascript
复制
SELECT
  site_id, 
  count(*)
FROM site_feature
GROUP BY site_id
HAVING count(*) > 1;

下面是组函数的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23527960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档