单表中的简单select查询

vd8tlhqk  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(355)

我有表顺序,它有很多列,但我对这些,用户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      |
|--------------------|-----------------|------------|

我需要做一个查询,选择那些用户有第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的用户。。。但我被困住了。

vc9ivgsu

vc9ivgsu1#

使用 group by 以及 having . 假设表中没有重复项:

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
siv3szwd

siv3szwd2#

你可以用 GROUP BY 条款:

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);

相关问题