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