Простой запрос выбора в одной таблице - PullRequest
0 голосов
/ 25 октября 2018

У меня есть порядок таблиц, в нем много столбцов, но меня интересуют эти, user_id и article_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. Нет столбца Name, я просто добавил его для лучшего понимания.

Я пробовал этот запрос:

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

Но я получаю все article_id и user_id.Я знаю, что я должен использовать другой выбор, чтобы выбрать только тех пользователей с 55 и 115 ... но я застрял.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете использовать 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);
0 голосов
/ 25 октября 2018

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...