SELECT `user_id`
FROM `user_tags`
WHERE `tag_id` IN (1, 2)
GROUP BY `user_id`
HAVING COUNT(DISTINCT `user_id`) = 2
SELECT `id`, COUNT(*) AS `count`
FROM `users`
GROUP BY `id`
HAVING `count` > 1
SELECT `user_id`, `tag_id`, COUNT(*) AS `count`
FROM `user_tags`
GROUP BY `user_id`, `tag_id`
HAVING `count` > 1
возможно вам нужно будет использовать BOOLEAN MODE