Запрос с использованием 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_idWHERE filter_id IN (57,65)- происходит фильтрация по значению поляfilter_id, которое должно быть равно 57 или 65GROUP BY 1- происходит группировка по полюproduct_idHAVING count(*)=2- происходит фильтрация по количеству записей в каждой группе, должно быть ровно 2 Таким образом, запрос выбирает все записи из таблицыmytable, где полеfilter_idравно 57 или 65, затем группируются по полюproduct_idи оставляются только те группы, в которых количество записей равно 2.