Mysql 单表中的简单选择查询

Mysql 单表中的简单选择查询,mysql,sql,Mysql,Sql,我有表顺序,它有很多列,但我对这些,用户id和文章id感兴趣 |--------------------|-----------------|------------| | user_id | article_id | Name | |--------------------|-----------------|------------| | 1 | 115 | John | |

我有表顺序,它有很多列,但我对这些,用户id和文章id感兴趣

|--------------------|-----------------|------------|
|      user_id       |    article_id   |  Name      |
|--------------------|-----------------|------------|
|         1          |         115     |  John      |
|         1          |         55      |  John      |
|         2          |         115     |  Mike      |
|         2          |         49      |  Mike      |
|         3          |         115     |  Dave      |
|         3          |         55      |  Dave      |
|--------------------|-----------------|------------|
我需要做一个查询,选择那些拥有article_id 115和55的用户。本例中的预期结果是获得名为John和Dave的用户,因为他们都有115和55。没有列名称,我只是将其添加到中以便更好地理解

我尝试了以下查询:

SELECT * FROM orders AS o
WHERE o.article_id IN (55, 115)
ORDER BY o.user_id 

但是我得到了所有的文章id和用户id。我知道我应该使用另一个select来选择只有55和115的用户。。。但是我被卡住了。

使用
分组方式和
拥有
。假设表中没有重复项:

SELECT o.user_id, o.name
FROM orders o
WHERE o.article_id IN (55, 115)
GROUP BY o.user_id, o.name
HAVING COUNT(*) = 2;  -- has both

使用
分组依据
拥有
。假设表中没有重复项:

SELECT o.user_id, o.name
FROM orders o
WHERE o.article_id IN (55, 115)
GROUP BY o.user_id, o.name
HAVING COUNT(*) = 2;  -- has both

您可以使用
分组依据
子句:

SELECT o.user_id, o.name
FROM orders o
WHERE o.article_id IN (55, 115)
GROUP BY o.user_id, o.name
HAVING MIN(o.article_id) <> MAX(o.article_id);
选择o.user\u id,o.name
从命令
其中o.article_id位于(55115)
按o.user\u id、o.name分组
具有最小(o.article_id)和最大(o.article_id);

您可以使用
分组依据
子句:

SELECT o.user_id, o.name
FROM orders o
WHERE o.article_id IN (55, 115)
GROUP BY o.user_id, o.name
HAVING MIN(o.article_id) <> MAX(o.article_id);
选择o.user\u id,o.name
从命令
其中o.article_id位于(55115)
按o.user\u id、o.name分组
具有最小(o.article_id)和最大(o.article_id);