Запрос с использованием IN - MySQL
Формулировка задачи:
Всем привет,
Помогите, пожалуйста выполнить следующий запрос. Есть таблица:
Нужно получить все product_id, у которых filter_id = 57 и 65. То есть, из данной таблицы это только 101.
Делаю вот такой запрос:
Но он дает пустой результат.
А запрос:
Выводит 101, 103 и 105.
Подскажите пожалуйста как вывести значение product_id, у которых filter_id равен и 57 и 65.
Заранее благодарен!
| product_id | filter_id -------------------------- | 100 | 58 | 101 | 57 | 101 | 65 | 102 | 30 | 103 | 65 | 104 | 20 | 105 | 57
SELECT product_id FROM mytable WHERE filter_id = 57 AND filter_id = 65
SELECT product_id FROM mytable WHERE filter_id IN (57,65)
Решение задачи: «Запрос с использованием IN»
textual
Листинг программы
SELECT product_id FROM mytable WHERE filter_id IN (57,65) GROUP BY 1 HAVING count(*)=2;
Объяснение кода листинга программы
В данном коде происходит следующее:
SELECT product_id FROM mytable
- выбираются все записи из таблицыmytable
, где полеproduct_id
WHERE filter_id IN (57,65)
- происходит фильтрация по значению поляfilter_id
, которое должно быть равно 57 или 65GROUP BY 1
- происходит группировка по полюproduct_id
HAVING count(*)=2
- происходит фильтрация по количеству записей в каждой группе, должно быть ровно 2 Таким образом, запрос выбирает все записи из таблицыmytable
, где полеfilter_id
равно 57 или 65, затем группируются по полюproduct_id
и оставляются только те группы, в которых количество записей равно 2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д