Как сделать пересечение множеств в MySQL
В данной заметке приведен пример, позволяющий сделать пересеение множеств с ипользованием MySQL.
Итак, пусть у нас есть таблица people_table вида
user_id | place_id |
1 | 2 |
2 | 2 |
1 | 20 |
2 | 23 |
3 | 81 |
и пусть вы хотите вывести все user_id, которые относятся к place_id равному 2 и 16 - в этом случае поможет такой запрос
select `user_id` from `people_table` where `place_id` in (2,16) group by `user_id` having count(distinct place_id)=2
Чем больше у нас будет возможных place_id в запросе - тем больше должно быть число в последней строчке. Этот запрос позволит вывести всех людей, относящихся ко всем выбранным местам.